Wenn Sie ein schnelles Ergebnis erzielen möchten, verwenden Sie jedoch Spotlight. Auch, wenn Sie Dateien suchen möchten, in denen Text nicht unbedingt direkt in der Datei gespeichert ist, z. B. PDF oder ODF.
Joey
Guter Rat, aber in meinem Fall bin ich nicht sicher, ob die Dateien indiziert sind, da sie sich auf Netzwerktreibern befinden. Und es handelt sich auch um XML-Dateien, die zu einem bestimmten Programm gehören.
Ich würde vorschlagen man grep, all die wunderbaren Möglichkeiten von grep zu entdecken
Ludovic Kuty
Dies listet jede Datei auf, die im Pfad vorhanden ist, und fügt hinzu: No such file or directory Ich versuche, nur die Liste der Textvorkommen abzurufen. Wie können wir diese Liste bekommen?
Sie können je nach Geschmack und Bedarf eine der folgenden Optionen auswählen. Angenommen, Sie müssen rekursiv im aktuellen Verzeichnis nach Dateien suchen, die Text - "async" enthalten, dann haben Sie folgende Möglichkeiten:
Ignacios Antwort ist großartig und hat mir geholfen, die Dateien zu finden, die bestimmten Text enthalten. Das einzige Problem, dem ich gegenüberstand, war, dass beim Ausführen dieses Befehls alle Dateien aufgelistet wurden, einschließlich einer, bei der das Muster nicht angezeigt wurde.
No such file or directory Dies sehe ich neben Dateien, die das Muster nicht enthalten.
Wenn Sie stattdessen -sden Befehl hinzufügen , wie in
grep -lr "text pattern" ./ -s:; grep -lr "text pattern" [PATH DIRECTORY] -swird nur angezeigt, welche Dateien das Muster enthalten.
Ebenso wenn grep -nr "text pattern" ./ -s; grep -nr "text pattern" [PATH OF DIRECTORY] -sBefehl wird verwendet, um die Datei plus die Zeilennummer und das Auftreten des Musters zu drucken.
Bitte korrigieren Sie mich, wenn mein Verständnis falsch ist.
Eine weitere Möglichkeit zur Vermeidung dieser lästigen keine solche Datei Fehler, ist mit dem Rohr stderr auf null. grep ... 2>/dev/null. Diese Lösung funktioniert für die meisten Programme, da sie Fehlermeldungen im stderr-Stream und nicht im stdout-Stream melden. Ich habe diese Lösung schon oft mit verwendet find, da für viele Dateien die Erlaubnis verweigert wird .
Jpaugh
(1) Wenn Sie No such file or directoryNachrichten für vorhandene Dateien erhalten, tun Sie entweder etwas falsch oder Ihr System ist kaputt. (2) Was hat [PATH OF PARENT]mit irgendetwas zu tun?
G-Man
@ G-Man Ich habe die Antwort bearbeitet, um [PATH OF DIRECTORY]nur zu zeigen, falls jemand Unbekanntes wissen wollte, warum ich gesetzt hatte./
CP3O
@ G-Man Ich benutze einen Mac nicht Ubuntu, bin mir nicht sicher, wie mein System kaputt gehen würde, ich habe noch kaum etwas daran gemacht.
Antworten:
quelle
man grep
, all die wunderbaren Möglichkeiten von grep zu entdeckenNo such file or directory
Ich versuche, nur die Liste der Textvorkommen abzurufen. Wie können wir diese Liste bekommen?grep -lr "text pattern" ./ -s
;grep -lr "text pattern" [PATH OF PARENT] -s
Verwenden Sie Scheinwerfer
vergiss nicht zu schauen auf:
quelle
brew install ack ack "text goes here"
find . |grep "text goes here"
grep -RnslI "text goes here"
quelle
Sie können je nach Geschmack und Bedarf eine der folgenden Optionen auswählen. Angenommen, Sie müssen rekursiv im aktuellen Verzeichnis nach Dateien suchen, die Text - "async" enthalten, dann haben Sie folgende Möglichkeiten:
Grep benutzen
Mit ack
quelle
Ignacios Antwort ist großartig und hat mir geholfen, die Dateien zu finden, die bestimmten Text enthalten. Das einzige Problem, dem ich gegenüberstand, war, dass beim Ausführen dieses Befehls alle Dateien aufgelistet wurden, einschließlich einer, bei der das Muster nicht angezeigt wurde.
No such file or directory
Dies sehe ich neben Dateien, die das Muster nicht enthalten.Wenn Sie stattdessen
-s
den Befehl hinzufügen , wie ingrep -lr "text pattern" ./ -s
:;grep -lr "text pattern" [PATH DIRECTORY] -s
wird nur angezeigt, welche Dateien das Muster enthalten.Ebenso wenn
grep -nr "text pattern" ./ -s
;grep -nr "text pattern" [PATH OF DIRECTORY] -s
Befehl wird verwendet, um die Datei plus die Zeilennummer und das Auftreten des Musters zu drucken.Bitte korrigieren Sie mich, wenn mein Verständnis falsch ist.
Referenz: Wie kann ich feststellen, dass grep den Fehler 'Keine solche Datei oder Verzeichnis' ausgibt?
quelle
grep ... 2>/dev/null
. Diese Lösung funktioniert für die meisten Programme, da sie Fehlermeldungen im stderr-Stream und nicht im stdout-Stream melden. Ich habe diese Lösung schon oft mit verwendetfind
, da für viele Dateien die Erlaubnis verweigert wird .No such file or directory
Nachrichten für vorhandene Dateien erhalten, tun Sie entweder etwas falsch oder Ihr System ist kaputt. (2) Was hat[PATH OF PARENT]
mit irgendetwas zu tun?[PATH OF DIRECTORY]
nur zu zeigen, falls jemand Unbekanntes wissen wollte, warum ich gesetzt hatte./