プロが教えるわが家の防犯対策術!

Linuxでサブディレクトリも含めて、ある拡張子(今回は「*.txt」)のデータをコピーしたいのですが、どうすればいいでしょうか?
色々自分でも調べて「find」と「xargs」を使ったコピーの仕方にたどり着きました。
https://www.usagi1975.com/17nov140811/
しかしそこでさらに分からなくなるのが、
『$ find . -name (検索キーワード) | xargs -i cp -p {} (コピー先ディレクトリ)』と入力すればいいと思うのですが、「find」の後の「.(ピリオド)』はいったい何なのでしょうか?
それから「xargs」のオプションの「-i」も調べると「-I」と大文字だったり、さらにはテキストファイルを指定したい場合「’(シングルクォーテーション)」と「”(ダブルクォーテーション」に何か違いはあるのでしょうか?
後、「cp -p {}」の「{}」は何ですかね?
色々なサイトを見ているとよくわからなくなってしまいました。
申し訳ありませんが、どなたか教えていただけるとありがたいです。
どうかよろしくお願いします。

A 回答 (3件)

コマンドのオプション等の詳細は別の回答にまかせて省略します。



対象ファイルがどのぐらいあるかによりますが、そのサイトにあるやり方だとファイル数が多すぎるとエラーになる気がします。
自分はそういう時、以下の要領で1つずつ処理しちゃいます。

$ find -type f -name "*.txt" | while read t; do cp -p $t <コピー先>; done
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
一応何とかなりました。ありがとうございました。

お礼日時:2019/04/01 15:58

単に「ファイル数が多い」だけなら大丈夫ですよ>#2.



ところでこれだと「全てのファイルが同一ディレクトリにいく」つまり
同じ名前のファイルが複数あるとどれか 1個だけが残る
はずなんだけど, それでいい?
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
同じ名前のファイル名はないのでなんとかなりました。
ありがとうございました。

お礼日時:2019/04/01 15:59

>find」の後の「.(ピリオド)』はいったい何なのでしょうか?



「.」はカレントディレクトリの意味です。「../」にすれば一つ上のディレクトリ。「/」にすれば...

>「xargs」のオプションの「-i」~

不明なことがあればまず「man」で調べる癖をつけましょう。ちゃんと書いてあるはずです。

>後、「cp -p {}」の「{}」は何ですかね?

対象となる(findで見つかった)全ファイルという意味
    • good
    • 1
この回答へのお礼

お礼が遅くなってしまいすみません。
一応『man』コマンドで調べては見たのですが、よく分からず質問してしまいました。申し訳ありませんでした。
とりあえず、何とかなりました。ありがとうございました。

お礼日時:2019/04/01 15:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!