da l3on4rdo » martedì 7 febbraio 2012, 12:35
Riscrivo in modo più leggibile il codice postato ieri sera.
- Codice: Seleziona tutto
find dirPath -type f | while read fileName
do
if grep -iw PAROLA1 $fileName > /dev/null; then
grep -iw PAROLA2 $fileName > /dev/null && echo $fileName
fi
done
In pratica la logica è questa:
1) trovami tutti i file contenuti in dirPath (tutti! anche quelli nelle subdirectory)
2) leggi l'output del precedente comando riga per riga (ovvero i path dei file trovati) e controlla che il file contenga PAROLA1
3) se trovi PAROLA1, controlla che il file contenga PAROLA2, e solo se la trovi stampami il path del file
Si può limitare la ricerca di find ad una profondità desiderata (con le opzioni mindepth e maxdepth)
La ricerca tramite grep, in questo codice ma non in quello di ieri, è "vincolata" con le opzioni -i e -w
-i per considerare allo stesso modo minuscole e maiuscole
-w per cercare solo i match della parola vera e propria (ossia, se cerco bar non troverò dsflj
bardalkj)
Ciao
Ultima modifica di
l3on4rdo il martedì 7 febbraio 2012, 12:37, modificato 1 volta in totale.
Come da regolamento, UNA DISCUSSIONE, PER OGNI PROBLEMA, DOPO aver verificato, con UNA RICERCA, che non sia stato già trattato.
E, prima di sparire con la soluzione, ricorda di mettere [Risolto] nel titolo del primo messaggio della discussione.
La vendetta è un piatto da consumare freddo. Per questo hanno inventato il freezer.