Ich durchsuche ein Git-Repository und möchte den .git
-Ordner hinzufügen.
grep
enthält diesen Ordner bei der Ausführung nicht
grep -r search *
Was wäre ein Grep-Befehl, um diesen Ordner aufzunehmen?
Bitte verwende die Lösung am Ende dieses Beitrags als eine bessere Alternative zu dem, was du tust.
Sie können versteckte Dateien explizit einschließen (ein Verzeichnis ist auch eine Datei).
grep -r search * .*
*
stimmt mit allen Dateien außer den versteckten überein und .*
wird nur mit versteckten Dateien übereinstimmen. Dies schlägt jedoch fehl, wenn sich in einem bestimmten Verzeichnis entweder keine nicht versteckten Dateien oder keine versteckten Dateien befinden. Sie können natürlich .git
anstelle von .*
explizit hinzufügen.
Wenn Sie jedoch nur in einem bestimmten Verzeichnis suchen möchten, gehen Sie folgendermaßen vor:
grep -r search .
.
stimmt mit dem aktuellen Pfad überein, der sowohl nicht versteckte als auch versteckte Dateien enthält.
Ich bin gerade auf dieses Problem gestoßen und basierend auf der Antwort von @ bitmask, hier meine einfache Modifikation, um das von @sehe aufgeführte Problem zu vermeiden:
grep -r search_string * .[^.]*
Möglicherweise kombinieren Sie "grep" mit dem Befehl "find", um komplette Lösungen wie
find . -exec grep -Hn search {} \;
Dieser Befehl durchsucht versteckte Dateien oder Verzeichnisse nach der Zeichenfolge "search" und listet jede Datei zufällig mit diesem Ausgabeformat auf:
Dateipfad: Zeilennummer: Zeile mit Zufall
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
Möglicherweise möchten Sie diesen Ansatz verwenden:
find ~ -name '*' | xargs grep search
oder wenn Sie nur auf oberster Ebene suchen möchten (was schneller zu testen ist, wenn Sie diese ausprobieren):
find ~ -maxdepth 1 -name '*' | xargs grep search
Um zu verhindern, dass .
und ..
, die keine versteckten Dateien sind, übereinstimmen, können Sie grep
mit ls -A
wie im folgenden Beispiel verwenden:
ls -A | grep "^\."
^\.
gibt an, dass das erste Zeichen .
sein muss
Die Option -A
oder --almost-all
schließt die Ergebnisse .
und ..
aus, sodass nur versteckte Dateien und Verzeichnisse abgeglichen werden.
Um nur innerhalb eines bestimmten Ordners zu suchen, können Sie Folgendes verwenden:
ls -al | grep " \."
Sehr einfacher Befehl zum Auflisten und Weiterleiten an grep
Alle anderen Antworten sind besser. Das ist vielleicht leicht zu merken:
find . -type f | xargs grep search
Sucht nur Dateien (einschließlich versteckter Dateien) und grep jede Datei
So durchsuchen Sie NUR alle versteckten Dateien und Verzeichnisse an Ihrem aktuellen Speicherort:
find . -name ".*" -exec grep -rs search {} \;
NUR alle versteckten Dateien:
find . -name ".*" -type f -exec grep -s search {} \;
NUR alle versteckten Verzeichnisse:
find . -name ".*" -type d -exec grep -rs search {} \;
Zusätzlich zu Tylers Vorschlag gibt es hier den Befehl, alle Dateien und Ordner einschließlich versteckter Dateien rekursiv zu prüfen
find . -name "*.*" -exec grep -li 'search' {} \;