2009-12-20 12 views
20

Ho una cartella di caricamento di Wordpress che è strutturata utilizzando sottocartelle per mesi.Copia il contenuto delle cartelle nidificate in una cartella in modo ricorsivo (terminale)

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

Come utilizzare il terminale per copiare tutte le immagini in modo ricorsivo in un'altra cartella? Non riesco a visualizzare le cartelle con caratteri jolly come i nomi dei file con caratteri jolly. (ad es. * .jpg o *) (Sono su Mac OSX)

cp -R ./*.jpg . 

?

risposta

31

Questo copierà tutti i file * .jpg dalla cartella corrente in una nuova cartella e manterrà la struttura della directory.

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

Per copiare senza mantenere la struttura di directory:

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

Dovrei aver carportato nell'OP che voglio eliminare la struttura e voglio solo tutte le immagini in una cartella piatta. – Wolfr

+0

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

+0

Darn, le mie backquote attorno alla ricerca sono state interrotte. –

28

Fuori della parte superiore della mia testa:

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

Se questo non funziona, commentare e cercherò di nuovo, ma find è sicuramente la strada da percorrere.

+2

Questa è la risposta corretta perché funziona con i file/cartelle che hanno spazi nei loro nomi. – Sinatra

Problemi correlati