2017-01-19 5 views
0

ディレクトリ内のすべてのファイルとそのサブディレクトリを見つける必要がありますが、ディレクトリ構造を維持する必要があります。たとえば、そこにファイル他のディレクトリへの再帰的な検索とコピー

/media/subdir1/subdir2/file.jpg 

であり、私はすべてのファイルの内部/メディア/ディレクトリに

/new-media/subdir1/subdir2/file.jpg 

と同じにそれをコピーします。そして、/ new-media /内のディレクトリが存在しなければ作成されなければなりません。

私は

find /media/ -name '*.jpg' -exec cp /new-media/ ????? {} \; 

を使用している場合どのように私は/ /メディア内のすべてのサブディレクトリを得ることができますか?

+0

'CP -r /メディア/ IS:それはあなたがボックスの外側を考えるようにしたい場合、あなたは、単に、その後のようなもので、「.JPG」で終わらないものを削除し、再帰的に上のディレクトリ全体をコピーすることができ、言いましたあなたは何を望んでいるのですか?そうでない場合は、どうしてですか? – trentcl

答えて

2

上記のあなたの中に/メディアすべてを取得しますが、あなたはおそらくのようなものを使用したいしたい正確に何を得るために:

方法1:あなたはあなたの要件ごとに、再帰的に必要なものだけコピー:

mkdir ../media2; find . -name "*.jpg" -exec cp -r --parents {} ../media2 \; 

私はこれを再帰的に検索したいディレクトリの内側から実行しました。その後、 ".JPG" 再帰的で終わるすべてのファイルを検索します - 新しい宛先ディレクトリ

mkdir ../media2 

2を作成 -

1:それはカップルのことを行います。

find . -name "*.jpg" 

3 - 各ファイルにコピーコマンドが一致するよう見つけるために戻っ渡す-exec使用し、潜水艦という点で、CPの構文を使用して、ソースファイルであることを行っている最初の引数(として):

"--parents"フラグは既存のディレクトリ構造を保持し、後続の親ディレクトリを再帰的に作成します。超便利な権利ですか?

方法2:xargsでこれを行うより良い方法があるかもしれませんが、上記の方法が最も簡単な方法です。

cp -r media media2; find ./media '!'-name "*.jpg" -type f | xargs rm 
1

私は、これはあなたが欲しいものだと思う:

cp -r /media /new-media 

は、-R、-r、--recursive
コピーディレクトリを再帰的

・ホープ、このことができます。

関連する問題