PDA

View Full Version : Bash script HELP!!


emre5
10-03-2009, 12:07
Salve a tutti. Devo scrivere uno script di shell che faccia il seguente "lavoro"

Ho una directory con N file. Alcuni contengono al loro interno la parola "parola". Devo fare in modo che lanciando questo script i file che la contengono vengano spostati in un altra directory, mentre quelli che non la contengono rimangano li

qualcuno mi sa aiutare ?

grazie in anticipo

sacarde
10-03-2009, 13:02
1) avere l'elenco dei file contenenti "parola"

find /directory-esempio -type f -exec grep -l "parola" {} \;


..... (... to be continued ...)

HexDEF6
10-03-2009, 13:30
1) avere l'elenco dei file contenenti "parola"

find /directory-esempio -type f -exec grep -l "parola" {} \;


..... (... to be continued ...)

un bel:
mv *parola* /dir/destinazione
non basta?

EDIT: ops... dipende da cosa intende per "contengono" (io pensavo al nome del file...)
nel caso si intenda dentro i file:
mv $(grep -l parola *) /dir/destinazione

emre5
10-03-2009, 13:45
un bel:
mv *parola* /dir/destinazione
non basta?

EDIT: ops... dipende da cosa intende per "contengono" (io pensavo al nome del file...)
nel caso si intenda dentro i file:
mv $(grep -l parola *) /dir/destinazione

si contengono è inteso dentro il file.

stefano@nasello:~/aaaa/PRD.20091302$ mv $(grep -l parola *) /home/stefano/parole
mv: manca l'operando per il file di destinazione dopo `/home/stefano/parole'
Usare "mv --help" per ulteriori informazioni.


mi dice questo... mi sai dire come mai ?

HexDEF6
10-03-2009, 13:51
metti una / alla fine della dir di destinazione

emre5
10-03-2009, 13:54
mi dice la stessa identica cosa...

HexDEF6
10-03-2009, 14:25
mi dice la stessa identica cosa...

lancia solo il:
grep -l parola *

se come risultato non c'e' niente, il problema e' quello!

gurutech
10-03-2009, 14:40
grep -l parola * | xargs -l -I{} mv "{}" /nuovadir

emre5
10-03-2009, 15:21
grep -l parola * | xargs -l -I{} mv "{}" /nuovadir


ok fatto grazie ! :D



e grazie a tutti quelli che hanno risposto!

HexDEF6
10-03-2009, 15:52
ok fatto grazie ! :D



e grazie a tutti quelli che hanno risposto!

boh... a me continua a funzionare pure il "mio" metodo

per curiosita' mi provi questo:
mv $(grep -l parola * | xargs) /dir/destinazione/

gurutech
11-03-2009, 22:46
boh... a me continua a funzionare pure il "mio" metodo

per curiosita' mi provi questo:
mv $(grep -l parola * | xargs) /dir/destinazione/

potrebbe funzionare, ma potrebbe anche incartarsi se mv interpreta i parametri di grep (primo post che hai fatto) o di xargs (questo post) come su una unica linea di comando. credo dipenda dalla versione di bash. Inoltre $(comando) se non sbaglio va bene solo in bash, se per caso usa una shell diversa non interpreterebbe correttamente.

HexDEF6
12-03-2009, 08:18
potrebbe funzionare, ma potrebbe anche incartarsi se mv interpreta i parametri di grep (primo post che hai fatto) o di xargs (questo post) come su una unica linea di comando. credo dipenda dalla versione di bash. Inoltre $(comando) se non sbaglio va bene solo in bash, se per caso usa una shell diversa non interpreterebbe correttamente.

hai ragione... il fatto e' che sono bash dipendente :D