Показать статистику
0 голосов
от (4.6тыс. баллов)

Мне нужно скопировать файлы с расширением .pdf, причем нужно скопировать все файлы. Некоторые из них находятся во вложенных директориях. 

Вот эта команда отрабатывает как нужно: 

cp -r ~/Documents/* ~/copies

А эта команда уже не работает: 

cp -r ~/Documents/*.pdf ~/copies

Первая строка скопирует все файлы и во все подкаталоги, а вторая скопирует только файлы .pdf в ~/Documents и ни один из файлов в подкаталогах. Есть идеи как скопировать ВСЕ файлы с расширением .pdf

300 просмотров 1 ответов

1 Ответ

+1 голос
от (4.5тыс. баллов)

Если вы хотите реплицировать структуру каталогов (больше похоже на то, что делает cp -r), но заполнять ее только файлами .pdf, вы можете сделать это с помощью rsync, где -f - параметр «фильтр». Другие варианты более просты. Вы найдете все варианты в man rsync.

rsync -nvr -f '+ *.pdf' -f '+ **/' -f '- *' --prune-empty-dirs ~/Documents/ ~/copies/

Рекомендуется использовать параметр «сухой запуск» -n и параметр -v, чтобы увидеть, что будет сделано перед запуском настоящей команды (когда n удалено из командной строки).

Так же можно воспользоваться командой find

find ~/Documents -name '*.pdf' -exec cp -nt ~/copies/ {} +
...