[Risolto] aiuto per comando terminale di copia ricorsiva

Installazione, configurazione e uso di programmi e strumenti.
Avatar utente
Marly
Prode Principiante
Messaggi: 205
Iscrizione: sabato 30 giugno 2007, 22:32
Desktop: Gnome/Unity
Distribuzione: Ubuntu 12.04 64bit

[Risolto] aiuto per comando terminale di copia ricorsiva

Messaggio da Marly »

domanda niubba:

esiste un comando che copia ricorsivamente tutti i file con una certa estensione presenti in una directory e in tutte le sue figlie?

ho pensato a qualcosa del tipo cp -r *.estensione destinazione, ma prende solo i file nella cartella genitore, e non scende nelle sottodirectory.
Ultima modifica di Marly il domenica 28 settembre 2008, 0:14, modificato 1 volta in totale.
Avatar utente
eNry92
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1323
Iscrizione: giovedì 4 ottobre 2007, 8:47
Località: Caserta

Re: aiuto per comando terminale di copia ricorsiva

Messaggio da eNry92 »

mi sono perso alla figlia  ::) ::)
ps
bell'avatar  ;D
"If I live, I will kill you. If I die, you are forgiven."
Such is the Rule of Honor.
Facebook  Twitter  Launchpad
Avatar utente
Marly
Prode Principiante
Messaggi: 205
Iscrizione: sabato 30 giugno 2007, 22:32
Desktop: Gnome/Unity
Distribuzione: Ubuntu 12.04 64bit

Re: aiuto per comando terminale di copia ricorsiva

Messaggio da Marly »

OK provo a rispiegare

Parto da una cartella madre (es la home), e voglio copiare tutte le immagini contenute in questa ed in tutte le sue sottocartelle (quindi file con estensione jpg).

Usando cp -r si ottiene un effetto simile, nel senso che copia tutto l'albero delle directory a partire da quella indicata. Se però specifico un formato (es cp -r *.jpg) si ferma alla cartella madre, senza entrare nelle sottocartelle.
Avatar utente
Re.in.stallo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 646
Iscrizione: martedì 20 dicembre 2005, 23:50

Re: aiuto per comando terminale di copia ricorsiva

Messaggio da Re.in.stallo »

prova così (cambiando le directory e l'estensione se necessario, facendo attenzione a lasciare lo \; alla fine):

Codice: Seleziona tutto

find /cartella/di/partenza -name "*.jpg" -exec cp '{}' /cartella/di/destinazione \;
Saluti, ;)
Gabriele
Sto diventando un allitterato, non riecso più a scrviere senza errori con la tatsiera...
Avatar utente
Marly
Prode Principiante
Messaggi: 205
Iscrizione: sabato 30 giugno 2007, 22:32
Desktop: Gnome/Unity
Distribuzione: Ubuntu 12.04 64bit

Re: aiuto per comando terminale di copia ricorsiva

Messaggio da Marly »

Fantastico, funziona!  :D

Grazie mille

PS:
avresti solo voglia di spiegarmi la sintassi della seconda parte del comando? (da -exec per intederci)

Non capisco le graffe, servono per prendere l'output del comando precedente?
Ultima modifica di Marly il domenica 28 settembre 2008, 0:17, modificato 1 volta in totale.
Avatar utente
Re.in.stallo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 646
Iscrizione: martedì 20 dicembre 2005, 23:50

Re: aiuto per comando terminale di copia ricorsiva

Messaggio da Re.in.stallo »

Marly ha scritto: Non capisco le graffe, servono per prendere l'output del comando precedente?
-exec è un'opzione di find che ti permette di eseguire un dato comando ogni volta che trova un file (che risponda ai requisiti della ricerca). Nel tuo caso il comando è cp. Le graffe servono per passare, di volta in volta, a questo secondo comando il nome del file "trovato" da find:
man find ha scritto:       -exec command ;
              Execute  command;  true  if 0 status is returned.  All following
              arguments to find are taken to be arguments to the command until
              an  argument  consisting of ‘;’ is encountered.  The string ‘{}’
              is replaced by the current file name being processed  everywhere
              it occurs in the arguments to the command, not just in arguments
              where it is alone, as in some versions of find.  Both  of  these
              constructions might need to be escaped (with a ‘\’) or quoted to
              protect them from expansion by the shell.  See the EXAMPLES sec‐
              tion  for examples of the use of the ‘-exec’ option.  The speci‐
              fied command is run once for each matched file.  The command  is
              executed  in  the  starting  directory.    There are unavoidable
              security problems surrounding  use  of  the  -exec  option;  you
              should use the -execdir option instead.
Saluti, ;)
Gabriele
Sto diventando un allitterato, non riecso più a scrviere senza errori con la tatsiera...
Avatar utente
Marly
Prode Principiante
Messaggi: 205
Iscrizione: sabato 30 giugno 2007, 22:32
Desktop: Gnome/Unity
Distribuzione: Ubuntu 12.04 64bit

Re: [Risolto] aiuto per comando terminale di copia ricorsiva

Messaggio da Marly »

Grazie mille!
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti