[RISOLTO] Copiare file da più sottocartelle

Installazione, configurazione e uso di programmi e strumenti.
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

[RISOLTO] Copiare file da più sottocartelle

Messaggio da nzechck85 »

Ciao a tutti Ragazzi!!
Ho un piccolo e banale problema che non riesco a risolvere. Successivamente a un recupero di dati da hard disk, il software che ho utilizzato mi ha creato la bellezza di 339 cartelle nella cartella home. Il mio intento è quello di copiare tutti i file contenuti in queste 339 cartelle e spostarli in un unica cartella. i file nelle cartelle sono tutti mp3 quindi filtrare la ricerca con l'estensione dei file.
Vi ringrazio anticipaamente per la pazienza e disponibilità
Ultima modifica di nzechck85 il martedì 24 aprile 2012, 22:27, modificato 1 volta in totale.
ispaniko7
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 680
Iscrizione: domenica 24 agosto 2008, 21:50
Desktop: gnome-flashback-compiz
Distribuzione: Ubuntu 16.04 LTS

Re: Copiare file da più sottocartelle

Messaggio da ispaniko7 »

Per copiare una directory in un altra devi dare da terminale:

Codice: Seleziona tutto

cp -r directory_da_copiare /directory_finale
Posso comandare anche il vento signore, c'è un uragano dentro di me che raderà al suolo ogni cosa se solo oserete sfidarmi.
l3on4rdo

Re: Copiare file da più sottocartelle

Messaggio da l3on4rdo »

nzechck85 ha scritto: [...]
Successivamente a un recupero di dati da hard disk, il software che ho utilizzato mi ha creato la bellezza di 339 cartelle nella cartella home. Il mio intento è quello di copiare tutti i file contenuti in queste 339 cartelle e spostarli in un unica cartella. i file nelle cartelle sono tutti mp3 quindi filtrare la ricerca con l'estensione dei file.
[...]
Queste directory hanno dei nomi particolari? Nel senso, hanno una radice comune e magari un numero finale che le distingue? O qualcosa sempre di questo genere?

In caso negativo, gli mp3 (per quanto riguarda la tua home e le sue sottodirectory) sono contenuti solo in quelle cartelle?
O ce ne sono altre che ne contengono (di mp3)?

Fammi sapere, ciao
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: Copiare file da più sottocartelle

Messaggio da nzechck85 »

Ciao e grazie per le immeddiate risposte

inizialmente io avevo pensato a un find *.mp3 | cp *.mp3 /percorso cartella di destinazione
ma naturalmente mi và in errore: cp ha bisogno di un percorso sorgente

le cartelle si intitolano tutte recup_dir.(numero cartella)
l3on4rdo

Re: Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Creati l'unica directory in cui vuoi spostare il tutto.
Una volta creata la directory, dai il comando:

Codice: Seleziona tutto

find ~/recup_dir.* -type f -iname "*.mp3" -exec mv {} path_della_directory_in_cui_spostare_il_malloppo_di_file_mp3 \;
Fai attenzione (e in caso parliamone prima che si creino incidenti) al fatto che se ci sono, nelle differenti directory recup_dir, dei file con lo stesso nome, nello spostamento ti verranno sovrascritti e alla fine vedrai solo l'ultimo.
Inoltre credo che il comando non funziona se degli spazi nel nome dei file (cosa che a priori escluderei, visto che sono generati da un programma che penso sia "sensato").

Se si verifica uno dei precedenti casi, dillo che facciamo delle prove prima di procedere.
Altrimenti vai sereno con il comando
(magari prima, per precauzione copia il contenuto di quelle directory da un'altra parte, oppure usa il comando cp al posto di mv).

Ciao

ps:
nel comando che hai postato:

Codice: Seleziona tutto

find *.mp3 | cp *.mp3 /percorso cartella di destinazione
ci sono un paio di errori concettuali.
Vedi tu se hai voglia di parlarne.
Io sono a disposizione per eventuali chiarimenti in merito :)
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: Copiare file da più sottocartelle

Messaggio da nzechck85 »

Digitando il comando consigliato da l3on4rdo, mi viene visualizzato il seguente errore:

Find: manca l'argomento per >

ho una soluzine diversa?

Grazie in anticipo
l3on4rdo

Re: Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Di soluzioni diverse ne esistono minimo due :)
Puoi postare l'output del comando:

Codice: Seleziona tutto

find --version
e anche il comando che hai dato e l'errore che ti ha prodotto (facendo proprio il copia incolla dal terminale :) )

Inoltre, per postare il codice, ricorda di usare i tag appositi.
Clicchi sul bottone con il carattere #, subito sopra le faccine.
Poi inserisci il testo tra i due tag che ti vengono visualizzati nel messaggio che stai scrivendo, in questo modo:
[nobbc]

Codice: Seleziona tutto

testo del codice
oppure
output di un comando
[/nobbc]
In questo modo il tuo messaggio risulta più facilmente comprensibile.

Saluti
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: Copiare file da più sottocartelle

Messaggio da nzechck85 »

Codice: Seleziona tutto

find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Compilato usando GNU gnulib versione e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Funzionalità abilitate: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0)
l3on4rdo

Re: Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Hai la mia stessa versione di find, quindi se stai usando una versione di Ubuntu non dovrebbero esserci problemi e il comando che ti ho suggerito dovrebbe funzionare.
Cerchiamo di capire perché non ti funziona.

Se dai il comando:

Codice: Seleziona tutto

find ~/recup_dir.* -type f -iname "*.mp3"
cosa ti risponde il terminale?
Nel senso, ti mostra i path dei file mp3?
Te li mostra correttamente?
Posta, in caso, un estratto dell'output.
(dico un estratto perché l'output del comando, se ne hai tanti, potrebbe essere molto lungo).

Ciao
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: Copiare file da più sottocartelle

Messaggio da nzechck85 »

Il comando elenca tutti i file mp3 di tutte le cartelle,
il terminale risponde così:

Codice: Seleziona tutto

Recupero/recup_dir.3/f63555523.mp3
Recupero/recup_dir.3/f64370291.mp3
Recupero/recup_dir.3/f64309187.mp3
Recupero/recup_dir.3/f60295107.mp3
Ciao
l3on4rdo

Re: Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Se non ti funziona il precedente comando, prova a dare:

Codice: Seleziona tutto

find ~/recup_dir.* -type f -iname "*.mp3" | while read fileName ; do mv $fileName path_directory_di_destinazione; done
ps:
mi sembra comunque strano che non ti funzioni l'opzione -exec
Se questo comando ti risolve, rimarrebbero comunque due questioni aperte. Questa di exec e quella della spiegazione degli errori del comando che hai postato.
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: Copiare file da più sottocartelle

Messaggio da nzechck85 »

Bèh!... GRANDIOSO!!
Il risultato è quello richiesto in principio, ma come dici tu ci sono delle cose da rivedere, come ad esempio il comando -exec che non funziona e il "mio" comando (pure)

Per ora non posso che ringraziarti infinitamente per la Pazienza e supporto offerto

P.S. avrei anche qualche quesito su samba :) ..... ma rimandiamo per ora

Grazie ancora
a presto!
l3on4rdo

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Per samba apri una nuova discussione nella sezione che ritieni più opportuna (al massimo la si sposta ).
Per il resto, mi sembra strano che exec non ti funzioni.
Prova a dare il comando:

Codice: Seleziona tutto

find ~/recup_dir.* -type f -iname "*.mp3" -exec echo mv {} path_della_directory_in_cui_spostare_il_malloppo_di_file_mp3 \;
Che ti dice?

ps:
che ti dice se dai:

Codice: Seleziona tutto

find path_directory_di_destinazione -type f -iname "*.mp3" | wc -l
?
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da nzechck85 »

Ciao Leo
Di seguito gli output dei comandi

Codice: Seleziona tutto

 ~Recupero/recup_dir.* -type f -iname "*.mp3" -exec echo mv {} /home/nzechck/mp3/
find: manca l'argomento per «-exec»

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname ".mp3" | wc -l
0
l3on4rdo

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Il secondo comando l'ho completamente toppato :)

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" | wc -l
anche il primo... è toppato...
Due su due... un'ottima media :D

Dai il comando:

Codice: Seleziona tutto

find path_directory_dove_hai_spostato_gli_mp3 -type f -iname "*.mp3" echo -exec mv {} path_della_directory_in_cui_spostare_il_malloppo_di_file_mp3 \;
Si dovrebbe capire come mai non ti funzionava l'exec, in questo modo (ovvero, sono test per iniziare a capire da cosa possa dipendere)
Comunque, alle brutte, mi sa che è meglio procedere creandosi una directory ad hoc, con il giusto contenuto e poi fare i test su di essa. Vediamo dopo questi output come procedere.

In merito al tuo comando:

Codice: Seleziona tutto

find *.mp3 | cp *.mp3 /percorso cartella di destinazione
ci sono un po' di errori ed incomprensioni.
Allora, il find in quel modo ti cerca nelle directory il cui nome è di questo tipo "qualsiasi-serie-di-caratteri".mp3
Non ti cerca, come penso tu volessi fare, tutti gli mp3.
Il primo parametro, come lo hai scritto tu, è la directory in cui fare la ricerca.
Inoltre la pipe è gestita malamente, nel senso che tu redirezioni (con la pipe) l'output del comando a sinistra della pipe verso il comando a destra della pipe.
Di nuovo, anche se come errore si vede spesso, l'output va letto e gestito.
In quel modo (con il cd *.mp3) inoltre, non associ i risultati del primo comando al secondo. Restano scorrelati e in pratica bash non capisce cosa gli stai chiedendo.
(questo perché avevi chiesto lumi sul tuo comando :) )

Ciao
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da nzechck85 »

Ciao Leo
Come và? di seguito ti posto l'ultimo comando

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" echo -exec mv {} /home/nzechck/nuovamp3
find: i percorsi devono precedere le espressioni: echo
Uso: find [-H] [-L] [-P] [-Olivello] [-D help|tree|search|stat|rates|opt|exec] [percorso...] [espressione]
questo è l'altro

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" | wc -l
1343
Grazie ancora
Avatar utente
Laycastle
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1183
Iscrizione: sabato 9 aprile 2011, 21:54
Desktop: KDE 4.8
Distribuzione: Gentoo ~amd64
Località: Torino

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da Laycastle »

nzechck85 ha scritto:Ciao Leo
Di seguito gli output dei comandi

Codice: Seleziona tutto

 ~Recupero/recup_dir.* -type f -iname "*.mp3" -exec echo mv {} /home/nzechck/mp3/
find: manca l'argomento per «-exec»
Manca il \; finale.
nzechck85 ha scritto:Ciao Leo
Come và? di seguito ti posto l'ultimo comando

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" echo -exec mv {} /home/nzechck/nuovamp3
find: i percorsi devono precedere le espressioni: echo
Uso: find [-H] [-L] [-P] [-Olivello] [-D help|tree|search|stat|rates|opt|exec] [percorso...] [espressione]
Credo intendesse

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" -exec echo mv {} /home/nzechck/nuovamp3 \;
Ciao. :D
Ultima modifica di Laycastle il sabato 28 aprile 2012, 16:30, modificato 1 volta in totale.
la via più breve tra due punti è l'arabesco.
l3on4rdo

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Come ha notato Laycastle, nei comandi che dai non hai copiato anche il finale ;\
Anche da un tuo post precedente si vedeva, ma non me ne ero accorto.
Ulteriori test sono inutili, perché exec ti viene riconosciuto, se dai il comando completo :)

Ciao
nzechck85
Prode Principiante
Messaggi: 16
Iscrizione: lunedì 8 febbraio 2010, 15:45

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da nzechck85 »

Ah! Cacchio

Però anche così facendo il terminale si blocca in questa situazione:

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" echo -exec mv {} /home/nzechck/nuovamp3\
> 


Si aspetta qualcolsaltro? è normale?

Grazie ancora
l3on4rdo

Re: [RISOLTO] Copiare file da più sottocartelle

Messaggio da l3on4rdo »

Il comando corretto è:

Codice: Seleziona tutto

find /home/nzechck/mp3 -type f -iname "*.mp3" -exec echo mv {} /home/nzechck/nuovamp3\ \;
Come ti ha fatto notare Laycastle (errore mio) avevo invertito per sbaglio exec ed echo. Vanno bene come scritti qui sopra (non edito i precedenti messaggi, altrimenti non si capisce il senso della discussione :) )
Anche in questo caso, stai attento al backslash e il punto e virgola finali.

Ciao
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 16 ospiti