PDA

View Full Version : [Script Unix] ls-grep-mv


stella_650
07-06-2008, 14:36
Ciao ragazzi, avrei bisogno di una mano per realizzare uno script che mi consenta di spostare da una dir_orig in una cartella chiamata string tutti i file di estensione .c che contengono la stringa <string> dove <string> è un parametro passato sulla riga di comando. Io ho due cartelle dir_orig e dir_dest nella quale si trova la cartella string.

Se a terminale stando nella dir_orig lancio il comando ls | grep string | mv `grep .c` /percorso_cartella_string ottengo cio' che voglio ma come faccio a realizzare questo comando con uno script? Che sintassi devo utilizzare...grazie per l'aiuto a priori...

Dawidh
07-06-2008, 15:31
Ciao puoi usare questa sintassi qui
#!/bin/sh
ls | grep string | mv `grep .c` /percorso_cartella_string

ovviamente se usi la shell sh, altrimenti mi sembra basti mettere bash, ma tranquillo che sh dovrebbe essere quella di default anche per te (spero :D )


fai un file eseguibile e poi lo lanci semplicemente con ./nome_script e verrà lanciato il comando ls e tutto il resto in un attimo
Ciao

stella_650
07-06-2008, 15:40
Ho provato questa soluzione ma ottengo un errore di questo tipo:
mv: missing destination file operand after `/home/stella/Lab_so/Script/dir_dest/string'
Try `mv --help' for more information.

In pratica in Script io ho sia dir_orig sia dir_dest all'interno del quale c'è string, ma è come se andando ad eseguire quelle istruzioni non sa dove deve recuperare le info per fare il grep. Se io da dir_orig in cui ho i file di prova per testare il funzionamento del comando, lancio il comando di cui prima
s | grep string | mv `grep .c` /percorso_cartella_string
mi fa quello che voglio, ma io devo lanciare lo script dalla cartella Script e far eseguire quelle istruzioni...qui nasce il problema...cioè come lo specifico?

Dawidh
07-06-2008, 15:58
Vediamo se ho capito bene il problema che hai....prova a fare così:

ls dir_orig/ | grep string | mv `grep .c` /percorso_cartella_string


in questo modo la grep dovrebbe venire eseguita nella cartella dir_orig

arara
07-06-2008, 16:06
#!/bin/bash
cd dir_orig
fileList=`ls *.c | grep $1`
mv $fileList dir_dest

per ottenere il valore del primo parametro passato sulla riga di comando leggi la variabile $1.