PDA

View Full Version : Aiuto su qualche semplice comando di shell


Balop
02-12-2008, 12:00
ciao, avrei bisogno di una mano d'aiuto per qualche piccolo comandino di shell...
l'esercizio che mi interessa fare è: copiare tutti i file .txt di una directory e delle sue sottodirectory in un altra directory..

con il comando cp non si possono copiare i file che ci sono nelle sotto cartelle, ho provato con il comando: find -name '*.txt'
ma in questo modo ottengo l'output a video dei file che mi interessano, non so come e con quale comando concatenare questo find..

lo stesso esercizio lo dovrei fare con i file nascosti..

ho cercato un pò sul comando ls ma non ho trovato niente che mi possa aiutare.

se qualcuno ha qualche consiglio. :rolleyes:

Caldwell83
02-12-2008, 12:35
Facendo il man di "cp" ho trovato questo:


-R, -r, --recursive
copy directories recursively


Non so se fa quello che vuoi tu.

Oppure potresti fare una piccola shell in questo modo:


for file in `find -name '*.txt'`
do
nome_file=`basename $file`
cp $file directory_destinazione/$nome_file
done

Balop
02-12-2008, 12:59
Facendo il man di "cp" ho trovato questo:


-R, -r, --recursive
copy directories recursively


Non so se fa quello che vuoi tu.


no, questo serve per copiare le cartelle, invece io dovrei copiare solo i file .txt, non tutta la cartella..


Oppure potresti fare una piccola shell in questo modo:


for file in `find -name '*.txt'`
do
nome_file=`basename $file`
cp $file directory_destinazione/$nome_file
done


nel compito non posso fare uno script, l'esercizio richiede di copiare quei file con una riga di comando. :muro:

Caldwell83
02-12-2008, 13:12
Forse ho trovato:

cp --target-directory=directory_destinazione `find -name '*.txt'`

Balop
02-12-2008, 14:07
Forse ho trovato:

cp --target-directory=directory_destinazione `find -name '*.txt'`

ok, ci siamo quasi!!
diciamo che funziona, però se ho dei file con dei nome tipo "prova 5.txt"
il terminale mi dà 2 righe di errore (una per "prova" e l'altra per "5.txt") con scritto "No such file or directory"..
insomma il comando non riconosce gli spazi a quanto pare..
ma con l'asterisco non dovrebbe copiare tutti i file che finiscono con .txt? :confused:

Caldwell83
02-12-2008, 14:15
Prova cosi':

cp --target-directory=directory_destinazione "`find -name '*.txt'`"

Edit: mmm... mi sa che non funziona

Balop
02-12-2008, 14:46
Prova cosi':

cp --target-directory=directory_destinazione "`find -name '*.txt'`"

Edit: mmm... mi sa che non funziona

eh no non funziona...
e magari ora lo posso provare sul pc e sperimentare un pò, ma al compito come si fa?!? mhaa

Caldwell83
02-12-2008, 14:50
Ho sempre avuto grossi problemi a lavorare con file che hanno nomi con gli spazi.
L'unica soluzione che ho trovato è di non usare mai nomi con gli spazi.

Balop
02-12-2008, 14:57
Ho sempre avuto grossi problemi a lavorare con file che hanno nomi con gli spazi.
L'unica soluzione che ho trovato è di non usare mai nomi con gli spazi.

vabbè, male che vada se in qualche altro compito richiederà di nuovo quell'esercizio metterò quella soluzione,
sperando che il prof non la vada a provare, o che lo provi con file con nomi senza spazi!! :p

comunque grazie 1000