Finde innerhalb des Dateibaums DIR alle Vorkommen des Wortmusters
REGEX und gib die Wortliste sortiert aus (GNU grep):
$ grep -oPhr REGEX DIR | sort | uniq
- -o : gib nur den durch REGEX gematchten Textteil aus
- -P : interpretiere REGEX als einen Perl-Regex
- -h : unterdrücke die Ausgabe des Dateinamens
- -r : durchsuche Verzeichnis DIR rekursiv
Soll die Menge der Dateien näher eingeschränkt werden, lässt sich dies
durch ein vorgeschaltetes find erreichen (Option -r bei
grep entfällt dann):
$ find DIR -type f -print0 | xargs -0 grep -oPh REGEX | sort | uniq
- -print0 ... -0 : Pfade mit Whitespace etc. werden korrekt behandelt
Anwendungsfall
Finde in Dateibaum app mit Perl-Quelltexten die Namen aller verwendeten
Klassen, die mit "R1::" beginnen:
$ grep -oPhr 'R1::[:\w]+' app | sort | uniq
R1::AppHome
R1::Array
R1::CheckValue
R1::ClassLoader
R1::Config
R1::Dbms::Database
...
Links