Ich benutze Bash unter Ubuntu.
Derzeit funktioniert dies gut für das aktuelle Verzeichnis:
catdoc *.doc | grep "specificword"
Aber ich habe viele Unterverzeichnisse mit DOC-Dateien.
Wie kann ich rekursiv nach "spezifischem Wort" suchen?
Ich benutze Bash unter Ubuntu.
Derzeit funktioniert dies gut für das aktuelle Verzeichnis:
catdoc *.doc | grep "specificword"
Aber ich habe viele Unterverzeichnisse mit DOC-Dateien.
Wie kann ich rekursiv nach "spezifischem Wort" suchen?
Antworten:
Verwendung find
für rekursive Suchen:
find -name '*.doc' -exec catdoc {} + | grep "specificword"
Dadurch wird auch der Dateiname ausgegeben:
find -name '*.doc' | while read -r file; do
catdoc "$file" | grep -H --label="$file" "specificword"
done
(Normalerweise würde ich verwenden find ... -print0 | while read -rd "" file
, aber es besteht möglicherweise eine Wahrscheinlichkeit von 0,0001%, dass dies notwendig ist, also habe ich aufgehört, mich zu kümmern.)
find -name \*.doc -exec sh -c "catdoc '{}' | grep -q 'specificword' && echo {}" \;
Vielleicht möchten Sie sich recoll ansehen , ein Volltextsuchwerkzeug für Linux- und Unix-Systeme, das viele verschiedene Dokumentformate unterstützt. Es ist jedoch indexbasiert, dh es muss die Dokumente, in denen Sie suchen möchten, vor der eigentlichen Suche indizieren. (Danke an Pabouk für diesen Hinweis).
Es gibt auch eine GUI und eine Kommandozeile.
Weitere Informationen finden Sie in der Dokumentation .