Alle .git Ordner rekursiv entfernen

Vor kurzem stand ich vor dem Problem, das ich eine Menge Git-Repositories auf der Festplatte hatte und diese um den .git Ordner bereinigen wollte. Unter Linux und Mac OS X kann man sich für diese Aufgabe mit der Kommandozeile behelfen. Dazu wechselt man in den entsprechenden Ordner und gibt im Terminal folgendes ein:

find . | grep .git | xargs rm -rf

Damit werden sämtliche .git Ordner rekursiv gesucht und gelöscht. Was übrig bleibt sind die aktuellen Arbeitskopien der jeweiligen Git-Repositores.

Mittels grep rekursiv unter Mac OS X suchen

Unter GNU grep gibt es den Parameter -r um rekursiv nach einer Zeichenkette im Verzeichnisbaum zu suchen. Da Mac OS X allerdings eine andere Variante von grep nutzt, funktioniert das ganze leider nicht so einfach. Stattdessen muss man folgende Befehlskette nutzen:

find . -name '*.txt' -print0 | xargs -0 grep -s -l 'Test'

Damit werden in diesem Fall alle Unterverzeichnisse nach Dateien mit der Endung .txt durchsucht. Alle gefundenen Dateien werden anschließend auf den Begriff Test durchsucht. Jede Datei in welcher der Suchbegriff vorkommt wird mit ihrem Pfad ausgeben.

Mittels “grep” Ordner rekursiv durchsuchen

Wenn man sich im Terminal durch Konfigurationsdateien hangelt, kann es durchaus vorkommen das man eine bestimmte Zeichenkette in den Dateien eines Ordners und dessen Unterordnern sucht. Hierfür bietet sich eine Kombination von “find” und “grep” an:

find . -type f -exec grep -l 'suchbegriff' {} \;

Das “find” Kommando ermittelt dabei alle Dateien und übergibt sie dann an “grep”. Als Ausgabe erhält man anschließend eine Liste der Dateien in welchen der gesuchte Begriff enthalten ist.