Wie kann ich unter Solaris rekursives grep ausführen?
Als ich es versuchte, erhielt ich folgende Fehlermeldung:
-r: invalid option.
command-line
unix
grep
solaris
Vikash Jindal
quelle
quelle
find . | xargs grep whatsyrexpression
oder verwenden Siecpan
, um denack
Befehl zu installieren .quelle
Die Option -r für grep funktioniert nur mit gnu grep. Lösungen mit xargs sind gut, verursachen aber einige Probleme - find | xargs grep bricht bei Dateinamen mit Leerzeichen ab und außerdem ist xargs auch ein Gnu-Tool, sodass es möglicherweise nicht installiert ist.
Soweit ich weiß, ist der richtige Weg, dies unter Solaris zu tun:
Beachten Sie auch, dass solaris (naja, unix) grep (zum Beispiel) keine Option -E hat, und Sie sollten dafür verwenden
egrep
.quelle
Wenn du Glück hast, hast du auch gnu grep installiert. Es wird dann " ggrep " genannt.
ggrep befindet sich normalerweise in,
/usr/sfw/bin/ggrep
wenn es installiert ist. Verwenden Sie die-H -R -I
Flags:-H
um den Dateinamen anzuzeigen,-R
für die rekursive Suche,-I
um Binärdateien zu ignorieren.Beispiel: Alle Zeilen in allen Dateien mit Ausnahme von Binärdateien aus diesem Verzeichnis einschließlich aller Unterverzeichnisse mit dem Wort "excel" anzeigen
quelle
Dies funktioniert auch für Dateinamen mit Leerzeichen. Warum / dev / null? Da jede grep-Instanz jeweils eine einzelne Datei überprüft und daher den Dateinamen nicht druckt, wenn eine Übereinstimmung gefunden wird. Das ist in Ordnung, wenn Sie wirklich nur eine einzelne Datei abrufen, aber es hilft nichts, wenn grep wiederholt von find aufgerufen wird. Das zusätzliche / dev / null dient als zusätzliche Dummy-Datei für die Suche, sodass grep dem aktuellen Dateinamen voranstellt, wenn die übereinstimmende Zeile gedruckt wird.
quelle