Pagina 1 di 1
Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 12:20
da trabu1
Buon giorno a tutti, sono nuovo nel forum e nel mondo LINUX.
Sto cercando di imparare i fondamenti della shell e in particolare col comando cp.
Domanda:
come faccio a copiare da una cartella (e tutte le sue sottocartelle) i soli file txt verso una altra cartella?
Penso si faccia così (esempio):
cp -vR /andrea/documenti/*.txt /andrea/documenti1/
ma mi da l'errore: IMPOSSIBILE ESEGUIRE STAT ........ FILE O DIRECTORY NON ESISTENTE
Dove sbaglio?
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 12:31
da wolf82
prova cosi:
Codice: Seleziona tutto
sudo cp /home/andrea/Documenti/1/*.txt /home/andrea/documenti1/
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 12:44
da trabu1
La tua soluzione non fa al caso mio per due motivi:
1- vorrei evitare di farlo spostandomi nella cartella in questione prima di copiare
2- ho provato come dici tu ma mi copia solo i txt contenuti nella cartella documenti, ma non nelle sue sottocartelle.
Altre idee?
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 12:52
da wolf82
Ho modificato il comando perchè era errato ..
Adesso copia ma solo i file dentro la cartella origine
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 12:57
da trabu1
Nessuno sa come fare per copiare i file txt anche in modo ricorsivo dentro le sottocartelle?
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 13:04
da wolf82
devi utilizzare il comando find ma non so come si fa..Adesso faccio delle prove ..
Leggi il manuale :da terminale digita
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 14:31
da 1001001
ciao!
l'opzione -r di cp non si usa per scendere ricorsivamente nelle sottocartelle e copiare i file che matchano il pattern, ma per copiare intere cartelle. Ad esempio
per fare quello che dici tu, anche a me viene in mente di usare find, come giustamente suggeriva wolf82. Prova con una cosa tipo
Codice: Seleziona tutto
find cartella_di_partenza -maxdepth -n -name "*.txt" -exec cp -v {} cartella_di_arrivo \;
dove n è il massimo livello di discesa che vuoi. Nel tuo caso viene ad esempio
Codice: Seleziona tutto
find /home/andrea/Documenti/ -maxdepth -5 -name "*.txt" -exec cp -v {} /home/andrea/Documenti1/ \;
PS: se non vuoi limitare il livello di discesa, non mettere l'opzione -maxdepth
Re: Copiare con asterisco
Inviato: domenica 6 gennaio 2013, 14:42
da wolf82
Ci sono riuscito :
Codice: Seleziona tutto
find /home/utente/Documenti -name '*.txt' -exec cp '{}' /home/utente/Scrivania/milan \;
Re: Copiare con asterisco
Inviato: giovedì 10 gennaio 2013, 23:29
da trabu1
Risolto con comando find :
Supponiamo di dover copiare tutti gli xls da Cartelladipartenza (e sottocartelle) a Cartelladestinazione :
andrea@andreapc:~$ ls -lR Cartelladipartenza
Cartelladipartenza:
totale 8
drwxrwxr-x 2 andrea andrea 4096 gen 10 23:09 1
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:08 1.xls
drwxrwxr-x 2 andrea andrea 4096 gen 10 23:09 2
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:09 2.xls
Cartelladipartenza/1:
totale 0
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:08 3.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:09 4.xls
Cartelladipartenza/2:
totale 0
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:08 5.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:09 6.xls
andrea@andreapc:~$ ls -lR Cartelladestinazione
Cartelladestinazione:
totale 0
andrea@andreapc:~$ cp $(find Cartelladipartenza -name "*.xls") Cartelladestinazione
andrea@andreapc:~$ ls -lR Cartelladestinazione
Cartelladestinazione:
totale 0
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 1.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 2.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 3.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 4.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 5.xls
-rw-rw-r-- 1 andrea andrea 0 gen 10 23:23 6.xls
Re: Copiare con asterisco
Inviato: venerdì 11 gennaio 2013, 20:33
da wolf82
Metti risolto modificando il titolo per primo post