Рекурсивно копировать содержимое вложенных папок в одну папку (терминал) - PullRequest
23 голосов
/ 20 декабря 2009

У меня есть папка загрузки Wordpress, которая структурирована с использованием подпапок по месяцам.

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

Как использовать терминал для рекурсивного копирования всех изображений в другую папку? Я не могу найти подстановочные папки, как вы можете подстановочные имена файлов. (например, * .jpg или *) (я на Mac OSX)

cp -R ./*.jpg .

?

Ответы [ 2 ]

36 голосов
/ 20 декабря 2009

Это скопирует все файлы * .jpg из текущей папки в новую папку и сохранит структуру каталогов.

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

Чтобы скопировать без сохранения структуры каталогов:

cp `find . -name "*.jpg"` <newfolder>
31 голосов
/ 20 декабря 2009

с макушки головы:

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

Если это не сработает, прокомментируйте, и я попробую еще раз, но find - определенно правильный путь.

...