Risposte:
Se lo usi bash
in una versione recente, puoi trarre vantaggio globstar
dall'opzione:
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
Ecco un test che ho fatto
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
Si noti il file "aaa bbb.pdf".
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"
per gestire i nomi dei file contenenti spazi?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(simile a un'altra risposta ma preferisco pipe / xargs / mv ... più intuitivo per me)
Cordiali saluti, ho fatto lo script di una riga sopra riportato con successo su più directory e più file pdf.
-print0
alla tua ricerca e -0
a xargs.
Per la riga di comando di Windows (cmd.exe), è possibile utilizzare:
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
Se stai cercando solo una directory in profondità, puoi fare:
mkdir <destination>
mv */*.pdf <destination>
dove <destination>
sta per qualche directory. mv
non creerà automaticamente una directory per te.
a/x.pdf
eb/x.pdf
?