On Wednesday 25 November 2009, Federico Calboli wrote:
> Aloha,
>
> dati chili e chili di file di testo (email varie, un file per
> messaggio), io voglio trovare i file contenenti due nomi (pippo e
> pluto per esempio), e solo quelli. Io fino a sciappinare con grep ci
> arrivo, ma grep non fa quello di cui ho bisogno:
>
> grep pippo *.emlx | grep pluto
>
> mi trova tutte le righe in tutti i file con pippo e pluto (ovvero
> nessuna). find non mi pare che faccia quello che voglio (ovvero dirmi
> in quali file i nomi pippo e pluto compaiono entrambi). Idee? che fo?
Alcune idee:
grep -l:
grep -l pippo *.emlx | xargs grep -l pluto
(che poi sarebbe meglio scrivere cosi':
grep -lZ pippo *.emplx | xargs -0 grep -l pluto )
oppure
perl -n0e 'if(/pippo/&&/pluto/){print "$ARGV\n"}' *.emplx
o ancora
awk 'FNR==1{pippo=0;pluto=0}
/pippo/{pippo=1}
/pluto/{pluto=1}
pippo && pluto {print FILENAME}' *.emplx
|