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

19

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

Como posso fazer isso?

    
por blz 20.09.2012 / 14:53

5 respostas

18

Se você usar bash em uma versão recente, poderá lucrar com a opção globstar :

shopt -s globstar
mv **/*.pdf papers/
    
por 20.09.2012 / 15:09
29
  find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;    

Aqui está um teste que 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
    
por 20.09.2012 / 15:08
4
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers

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

FYI, eu fiz o script de uma linha acima com sucesso em múltiplos diretórios e múltiplos arquivos pdf.

    
por 20.09.2012 / 18:12
0

Para a linha de comando do Windows (cmd.exe), você pode usar:

for /F "usebackq delims==" %j IN ('dir /s /b *.pdf') do copy "%j" c:\target_dir
    
por 20.09.2012 / 21:00
0

Se você está pesquisando apenas um diretório, você pode fazer:

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

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

    
por 11.02.2016 / 23:06