2009-12-20 25 views
20

Tengo una carpeta de carga de Wordpress que está estructurada usando subcarpetas durante meses.Copie el contenido de las carpetas anidadas en una carpeta recursivamente (terminal)

wolfr2:uploads wolfr$ tree . 
. 
|-- 2007 
| |-- 08 
| | |-- beautifulkatamari.jpg 
| | |-- beautifulkatamari.thumbnail.jpg 
| | |-- beetle.jpg 
| | |-- beetle.thumbnail.jpg 

¿Cómo uso el terminal para copiar todas las imágenes recursivamente en otra carpeta? Parece que no puedo comodín carpetas como puede comodín nombres de archivo. (por ejemplo, * .jpg o *) (Estoy en Mac OSX)

cp -R ./*.jpg . 

?

Respuesta

31

Esto copiará todos los archivos * .jpg de la carpeta actual a una nueva carpeta y conservará la estructura del directorio.

tar cvfp `find . -name "*.jpg"` | (cd <newfolder>; tar xfp -) 

Para copiar sin conservar la estructura de directorios:

cp `find . -name "*.jpg"` <newfolder> 
+0

Debería haber carlificado en el PO que quiero deshacerme de la estructura y solo quiero todas las imágenes en una carpeta plana. – Wolfr

+0

Ok, luego cp 'find. -name "* .jpg" '

+0

Maldición, mis comillas en la parte de atrás del hallazgo quedaron. –

28

De la parte superior de mi cabeza:

find . -type f -name \*.jpg -exec cp \{\} $TARGETFOLDER \; 

Si eso no funciona, comentario y voy a intentarlo de nuevo, pero find es definitivamente el camino a seguir.

+2

Esta es la respuesta correcta, ya que funciona con archivos/carpetas que tienen espacios en sus nombres. – Sinatra

Cuestiones relacionadas