Bearbeitet: Ich habe mein Problem fälschlicherweise falsch dargestellt. Ein genaueres Beispiel wird unten angezeigt.
Ich möchte alle Verzeichnisse in einem Zielverzeichnis rekursiv durchsuchen und jeden rekursiven Aufruf stoppen, nachdem das erste .git-Verzeichnis gefunden wurde.
Zum Beispiel, wenn wir diese Pfade haben:
/home/code/twitter/.git/
/home/code/twitter/some_file
/home/code/twitter/some_other_file
/home/code/facebook/.git/
/home/code/facebook/another_file
/home/code/configs/.git/
/home/code/configs/some_module/.git/
/home/code/configs/another_module/.git/
/home/code/some/unknown/depth/until/this/git/dir/.git/
/home/code/some/unknown/depth/until/this/git/dir/some_file
Ich möchte nur diese Zeilen im Ergebnis:
/home/code/twitter
/home/code/facebook
/home/code/configs
/home/code/some/unknown/depth/until/this/git/dir/
Das -maxdepth
hilft mir hier nicht weiter, weil ich nicht weiß, wie tief das erste .git-Verzeichnis für jedes Unterverzeichnis meines Ziels sein wird.
Ich dachte, ich find /home/code -type d -name .git -prune
würde es tun, aber es funktioniert nicht für mich. Was vermisse ich?
linux
command-line
unix
find
Gabe Hollombe
quelle
quelle
Antworten:
Klingt so, als ob Sie die
-maxdepth
Option möchten .find / home / code -maxdepth 2 -typ d -name .git
quelle
Es ist knifflig und maximal und Rekursions-Tricks helfen hier nicht weiter, aber hier ist, was ich tun würde:
Auf Englisch: Finde mir alle Verzeichnisse mit dem Namen ".git" und filtere alle Vorkommen in der Ergebnisliste heraus, die ".git /" (Punkt-Git-Schrägstrich) enthalten.
Die obige Befehlszeile funktioniert auf allen Unix-Systemen. Wenn Sie jedoch behaupten können, dass Ihr Fund "GNU find" ist, funktioniert dies auch:
Habe Spaß.
quelle
Suchen Sie alle Verzeichnisse, die ein .git-Unterverzeichnis enthalten:
quelle
find
Punkt-Verzeichnisse vor Nicht-Punkt-Verzeichnissen verarbeitet werden; Ein Verzeichnis könnte jedoch mehrere .dirs haben, und in diesem Fall wäre die Ausgabe immer noch willkürlich. Ja, es sieht so aus, als müssten Sie die Rekursion selbst in einem Skript steuern. Ich dachte, vielleicht ist die Ausgabe für Sie wichtiger als das Blockieren der Rekursion, also habe ich mich mit dem Problem befasst ...