Como posso copiar recursivamente todos os arquivos PDF em um diretório (e seus subdiretórios) em um único diretório de saída?

Como posso copiar recursivamente todos os arquivos PDF em um diretório (e seus subdiretórios) em um único diretório de saída?

Eu tenho um diretório que contém um grande número de arquivos PDF, alguns dos quais estão em subdiretórios (que podem estender várias camadas de profundidade). Gostaria de mover todos os arquivos correspondentes *.pdfpara uma única pasta de saída chamada papers.

Como posso fazer isso?

Responder1

Se você usar bashem uma versão recente, poderá lucrar com a globstaropção:

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

Responder2

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

Aqui está um teste que eu fiz

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

./a:
foo.pdf

./pdfs:

Observe o arquivo "aaa bbb.pdf".

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

./a:

./pdfs:
aaa bbb.pdf  foo.pdf

Responder3

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

(semelhante a outra resposta, mas prefiro pipe/xargs/mv ... mais intuitivo para mim)

Para sua informação, fiz o script de uma linha acima com sucesso em vários diretórios e vários arquivos PDF.

Responder4

Se você estiver pesquisando apenas um diretório, poderá fazer:

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

onde <destination>significa algum diretório. mvnão criará automaticamente um diretório para você.

informação relacionada