Newsgroup: it.comp.os.linux.iniziare
Titolo: LS + grep [HELP]

Ciao,
vorrei fare una cosa semplice ma non so come farla :-) ...
In pratica mi servierebbe controllare il contenuto di ogni file in una
directory e elencare a video i nomi dei file che contengono una stringa di
ricerca... quale sintassi potrei usare ?
Ho provato senza fortuna: ls | grep parola
Grazie!
Fabi

 ricerca... quale sintassi potrei usare ?
Piu` o meno, penso:
find /path/di/ricerca -exec grep -q PAROLA "{}" \; -print
-- 
Ikitt powered by find 
*** mailserver: 
freemail.it


La sintassi e` giusta. Probabilmente c'e` un errore nella parola...
Per questo tipo di "problemi", talvolta aiuta fare un "set -x" per avere una
traccia di che cosa faccia il comando.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 La sintassi e` giusta. Probabilmente c'e` un errore nella parola...
No, la sintassi è sbagliata: in questo modo grep cerca la parola nei nomi
dei file, non nei loro contenuti.
Dovrebbe andare bene: grep parola `ls` (con gli apici inversi), oppure la
soluzione con find che hanno già dato.
Gabry (e un po' d'attenzione) :-)
-- 
Home Page:       
http://www-studenti.dm.unipi.it/~stilli/
mailto:
super...@libero.it
           ICQ UIN: 159169930
Caccole Stellari Website: 
http://www.caccolestellari.com/
Gruppo Utenti Linux Pisa: 
http://www.gulp.linux.it/

 ricerca... quale sintassi potrei usare ?
io farei uno script;
for F in * ; 
do cat $F | grep stringa 2>&1 /dev/null ; 
if [ $? = 0 ]
then
echo $F ;
fi
done
Ti stampa solo i files che contengono la stringa. Naturalmente i files
divono essere in formato testo puro,
	Alejo

 Gabry (e un po' d'attenzione) :-)
Un po' d'attenzione, dici? Mettiamola cosi': il messaggio originale era mal
scritto. La frase "i nomi dei file che contengono una stringa di ricerca" la
si puo` leggere in due modi diversi. Io l'ho letta nel modo "sbagliato".
Dove fare la ricerca? Nei file o nei nomi dei file? L'attenzione io ce la
metto ma solo fino a un certo punto, poi mi stacco ;-)
Adesso che abbiamo chiarito la richiesta originale, che c'e` di sbagliato in:
grep -s parola *
grep -sl parola *


 done
Alejo,
1) lo script non funziona per files il cui nome contiene " " (cat $F non funge,
bisogna fare cat "$F")
2) invece di cat $F | grep stringa 2>&1 /dev/null avresti potuto fare:
grep -q stringa "$F" && echo "$F"
Quindi, versione riveduta e corretta:
for F in *; do grep -q stringa "$F" && echo "$F"; done


 grep -sl parola *
Nulla, direi. Oltretutto la mia soluzione ha lo stesso baco dello script
riportato in un altro post: i file con lo spazio nel nome vengono trattati
male.
Gabry (e i bagni d'umilté) :-)


 soluzione con find che hanno già dato.
Grazie !
non ho mai visto gli apici inversi, sai dirmi cosa signigicano per la shell
?
Thanks
Fabi

 ?
vedi in man bash il paragrafo "Command Substitution"
in breve significa che quello che c'e all'interno di quegli apici 
viene eseguito e quindi espanso nell' output del comando.
Ex. cat `ls`
fa il cat dei file della directory corrente.
-- 
The fish doesn't think ,
cause the fish knows everything
	>>>:/OuZ\:<<<
per rispondermi in mail rimuovere TOGLIQUESTO