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 *.pdf
para uma única pasta de saída chamada papers
.
Como posso fazer isso?
Responder1
Se você usar bash
em uma versão recente, poderá lucrar com a globstar
opçã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. mv
não criará automaticamente um diretório para você.