¿Cómo puedo copiar de forma recursiva todos los archivos pdf de un directorio (y sus subdirectorios) en un único directorio de salida?

¿Cómo puedo copiar de forma recursiva todos los archivos pdf de un directorio (y sus subdirectorios) en un único directorio de salida?

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 *.pdfa una única carpeta de salida llamada papers.

¿Cómo puedo hacer esto?

Respuesta1

Si utiliza bashuna versión reciente, puede beneficiarse de la globstaropció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. mvno creará automáticamente un directorio para usted.

información relacionada