Как рекурсивно скопировать все PDF-файлы в каталоге (и его подкаталогах) в один выходной каталог?

Как рекурсивно скопировать все PDF-файлы в каталоге (и его подкаталогах) в один выходной каталог?

У меня есть каталог, содержащий большое количество файлов PDF, некоторые из которых находятся в подкаталогах (которые могут иметь несколько уровней в глубину). Я хотел бы переместить все соответствующие файлы *.pdfв одну выходную папку с именем papers.

Как я могу это сделать?

решение1

Если вы используете bashпоследнюю версию, вы можете воспользоваться опцией globstar:

shopt -s globstar
mv **/*.pdf papers/

решение2

  find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;    

Вот тест, который я провел

$ ls -R
.:
a  aaa bbb.pdf  pdfs

./a:
foo.pdf

./pdfs:

Обратите внимание на файл «aaa bbb.pdf».

$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a  pdfs

./a:

./pdfs:
aaa bbb.pdf  foo.pdf

решение3

find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers

(похоже на другой ответ, но я предпочитаю pipe/xargs/mv ... для меня более интуитивно понятно)

К вашему сведению, я успешно применил приведенный выше однострочный скрипт к нескольким каталогам и нескольким PDF-файлам.

решение4

Если вы ищете только в одном каталоге, вы можете сделать следующее:

mkdir <destination>
mv */*.pdf <destination>

где <destination>обозначает некоторый каталог. mvне создаст для вас каталог автоматически.

Связанный контент