Tengo un directorio que contiene una gran cantidad de archivos PDF, algunos de los cuales están en subdirectorios (que pueden extenderse a varias capas de profundidad). Me gustaría mover todos los archivos que coincidan *.pdf
a una única carpeta de salida llamada papers
.
¿Cómo puedo hacer esto?
Respuesta1
Si utiliza bash
una versión reciente, puede beneficiarse de la globstar
opción:
shopt -s globstar
mv **/*.pdf papers/
Respuesta2
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
Aquí hay una prueba que hice
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
Observe el archivo "aaa bbb.pdf".
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
Respuesta3
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(similar a otra respuesta pero prefiero pipe/xargs/mv... más intuitivo para mí)
Para su información, hice el script de una línea anterior con éxito en varios directorios y varios archivos pdf.
Respuesta4
Si solo está buscando en un directorio profundo, puede hacer:
mkdir <destination>
mv */*.pdf <destination>
donde <destination>
representa algún directorio. mv
no creará automáticamente un directorio para usted.