Ich möchte in allen Dateien eines Verzeichnisses (und nicht in seinen Unterverzeichnissen) nach einer Textzeichenfolge suchen. Ich weiß, dass die -r
Option dies tut, aber das ist nicht das, was ich will.
Laufen
grep "string" /path/to/dir
soll das können, habe ich gelesen, aber es gibt mir den fehler:
grep: dir: Ist ein Verzeichnis
Als nächstes habe ich versucht,
grep
mehrere Dateien auszuführen.grep "string" .bashrc .bash_aliases
funktioniert perfekt.grep "string" .bash*
funktioniert auch wie vorgesehen.grep "string" *
gibt mir die fehler:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Es werden nur die Fehler gedruckt, die übereinstimmenden Zeilen werden nicht angezeigt. Ich habe versucht, die -s
Option zu verwenden, aber ohne Erfolg.
Also meine Fragen:
Warum kann ich
grep
ein Verzeichnis nicht wie in (1) verwenden, wenn ich das sollte? Ich habe das an vielen Beispielen im Internet gesehen.
Bearbeiten : Wenn ich "grep für ein Verzeichnis verwenden" sage, meine ich "in allen Dateien in diesem Verzeichnis mit Ausnahme der Unterverzeichnisse suchen". Ich glaube, dass dies das ist, was grep tut, wenn Sie ein Verzeichnis anstelle einer Datei übergeben. Irre ich michBitte erläutern Sie mir die Funktionsweise
grep
, die das Verhalten der Befehle in (2) erklären würde.
Bearbeiten : Lassen Sie mich genauer sein. Warum funktioniert die Verwendung von Platzhaltern, um mehrere Dateien anzugeben, in denen nach gesucht werden soll,.bash*
und nicht mit*
oder sogar./*
?Wie kann ich alle Dateien in einem Verzeichnis (und nicht in dessen Unterverzeichnissen) durchsuchen
grep
?
grep "string" .bash*
.
grep "string" * .* 2>/dev/null
odergrep -s "string" * .*
*
Globbing" erweitert. Beim Globbing werden keine Dateinamen berücksichtigt, die mit einem Punkt wie.bashrc
dem Standard beginnen. Sie können die Shell-Optionen so einstellen, dass sie diese Dateien enthalten, aber Sie können sich selbst ein bisschen durcheinander bringen, wenn Sie nicht wissen, was Sie tun. Eine gute Anleitung zum Verständnis des Globierens finden Sie hier mywiki.wooledge.org/glob