Das sollte den Trick tun und ist viel einfacher:
grep -R "some string" /
Durch Hinzufügen von -n werden die Zeilennummern angezeigt, die Sie benötigen:
grep -Rn "some string" /
Ich versuche, eine bestimmte Zeichenfolge in einer Datei irgendwo auf meiner Festplatte zu finden. Das Beste, was ich bisher gefunden habe, ist:
find -type f / | xargs cat | grep "string to find"
Dies sagt mir aber nur, ob der String irgendwo existiert oder nicht.
Woher weiß ich, in welcher Datei ich sie gefunden habe?
Gibt es einen besseren Weg?
Das sollte den Trick tun und ist viel einfacher:
grep -R "some string" /
Durch Hinzufügen von -n werden die Zeilennummern angezeigt, die Sie benötigen:
grep -Rn "some string" /
find / -type f -exec grep "string" {} +
Dadurch wird eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchgeführt, die langsamer, aber flexibler ist:
find / -type f -exec grep -i "string" {} +
Sie erhalten möglicherweise eine Menge Ergebnisse, so dass Sie sie auf weniger reduzieren können und dann mit fund bdurch die Ausgabe vorwärts und rückwärts navigieren können:
find / -type f -exec grep -i "string" {} + | less
Wenn Sie wissen, dass Sie nach *.txt
Dateien suchen, können Sie diese noch weiter verfeinern:
find / -type f -name "*.txt" -exec grep -i "string" {} + | less
Warum in diesem Fall überhaupt 'Katze' verwenden? Ich finde es immer merkwürdig, wie Menschen "Katze" ohne Grund verwenden. Mach einfach:
find -type f / | xargs grep "string to find"
Die Suche nach jeder einzelnen Datei auf Ihrer gesamten Festplatte ist natürlich ziemlich langsam. Es ist wahrscheinlich besser, ein Indexierungsprogramm zu verwenden, wenn Sie häufig so suchen müssen. Zum Beispiel ist Beagle eine ziemlich umfangreiche Suchmaschine, die es schon eine Weile gibt. Andere Optionen sind KDE's Strigi oder Google Desktop Search
Zumindest sollten Sie 'locate' anstelle von 'find' verwenden, es werden nur Dateinamen und nicht deren Inhalt indiziert, aber das beschleunigt trotzdem. Außerdem sollten Sie vor dem Einsatz von grep nach Dateityp filtern. Beispielsweise ist die Verwendung von grep für eine 100-MB-Avi-Datei oder so etwas nur Zeitverschwendung.
wie wäre es mit:
grep -r -H -i 'string' .
Woher weiß ich, in welcher Datei ich sie gefunden habe?
Sie müssen die -H
Option ' grep
' mit ' ' zum Drucken der entsprechenden Datei verwenden.
Ebenfalls,
/
') zu verwenden.John
Das Schema der -exec
Umschaltung des |
Operators ' ' hilft, wenn viele Dateien durchsucht werdenJa, grep mit dem Flag -r sucht rekursiv. Versuchen Sie einen Befehl wie:
grep -ri 'hello' .
Hier wird das aktuelle Verzeichnis und alle darin enthaltenen Dateien und Verzeichnisse nach dem Begriff "Hallo" durchsucht. Die -i-Markierung macht es case-unabhängig, so dass es auch "Hallo", "Hallo" usw. findet.