
Beispiel. Ich habe ein Wort, nach dem ich suche, sagen wir"Katze". Und ich weiß, dass das Wort überall im aktuellen Arbeitsverzeichnis zu finden ist. Also verwende ichgrep -r, und dies ergibt die Ergebnisse in der folgenden Form:
./Beispielstammverzeichnis/[Verzeichnis1|Verzeichnis2]/[EIN BELIEBIGER UNTERPFAD]/cat_file,
Wo
cat_datei
ist die Datei, die das Wort enthält"Katze". Was ist, wenn ich nur interessiert bin an
/Beispielstammverzeichnis/dir1/[beliebiger_Pfad]
Präfix für meinen Pfad? Wie sage ich esgrep?
Antwort1
ich würde versuchen
grep -rl cat directory | xargs dirname
Wo
grep -rl cat directory
Suche rekursiv (-r
) nach cat im Verzeichnis und (-l
) nach lisy-Dateien.| xargs dirname
jede Datei wird an „gegeben“dirname
, wodurch ein Dateiteil entfernt wird.
Antwort2
@Kusalanandas Antwort in den Kommentaren ist, was ich wollte: einfach tun
grep -r 'cat' /example_root/dir1/
Wenn Sie jedoch Verzeichnisnamen abrufen möchten, in denen sich die Wörter befinden, ist Folgendes (Mit freundlicher Genehmigung von @Archemar) praktisch.
grep -rl cat directory | xargs dirname