web-dev-qa-db-ja.com

ネストされたフォルダーの内容を1つのフォルダーに再帰的にコピーします(ターミナル)

Wordpressアップロードフォルダーがあり、サブフォルダーを使用して数か月間構造化されています。

wolfr2:uploads wolfr$ tree .
.
|-- 2007
|   |-- 08
|   |   |-- beautifulkatamari.jpg
|   |   |-- beautifulkatamari.thumbnail.jpg
|   |   |-- beetle.jpg
|   |   |-- beetle.thumbnail.jpg

ターミナルを使用してすべての画像を別のフォルダに再帰的にコピーするにはどうすればよいですか?ファイル名をワイルドカードで指定できるように、フォルダをワイルドカードで表示することはできません。 (例:*。jpgまたは*)(Mac OSXを使用しています)

cp -R ./*.jpg .

23
Wolfr

これにより、すべての* .jpgファイルが現在のフォルダーから新しいフォルダーにコピーされ、ディレクトリ構造が保持されます。

tar cvfp `find . -name "*.jpg"` | (cd <newfolder>; tar xfp -)

ディレクトリ構造を保持せずにコピーするには:

cp `find . -name "*.jpg"` <newfolder>
36

頭のてっぺんから:

find . -type f -name \*.jpg -exec cp \{\} $TARGETFOLDER \;

それでも問題が解決しない場合は、コメントしてもう一度やり直しますが、findが間違いなく最適な方法です。

31
Lucas Jones