Wie erhalte ich eine Liste der vollständigen Pfade aller .git-Unterordner in einer Verzeichnisstruktur?

487
Daisha Lynn

Ich kann den richtigen Befehlssatz in einer Windows-Eingabeaufforderung nicht ermitteln. FOR /? oder bash ls, dies zu tun.

Die folgende Batchdatei, die ich geschrieben habe, zeigt, was ich will, aber ich würde gerne wissen, ob es eine Möglichkeit gibt, dies ohne Batchdatei zu tun.

@echo off for /r %%i in (.) do if %%~nxi==.git echo %%i 

Anscheinend sollte ich in der Lage sein, einen DIR-Befehl mit einer Kombination aus / s / b und / ad auszugeben, um dies auszuführen. Ich bin bereit, durch grep oder FIND zu filtern, wenn ich muss.

Ich brauche offensichtlich keine Lösung, die ein Skript erfordert, da ich diese bereits habe, wie oben gezeigt.

Powershell kann auch ein Kandidat sein, solange es ein einfacher Befehl ist.

1
Ersetzen Sie "%%" durch "%", um die Befehlszeile zu verwenden: "für / r% i in (.) Tun, wenn% ~ nxi ==. Git echo% i" DavidPostill vor 7 Jahren 0
Das geht nicht. Wenn Sie Tausende von Dateien und Verzeichnissen haben, werden Sie 1000 Zeilen von Zeilen sehen, und Sie werden kaum die Zeile sehen, in der sie sich befinden. Sie müssten >> zu einer Datei zurückkehren und den Typ dieser Datei ausgeben. Scheint schmerzhaft. Daisha Lynn vor 7 Jahren 0
Sie können diesen Befehl so einstellen, dass nur das gewünschte Echo (mit @) und die Ausgabe an `more` weitergeleitet wird DavidPostill vor 7 Jahren 0
David, ich habe den "@" - Trick ausprobiert, bevor ich diese Frage gepostet habe. Es hat nicht funktioniert. Ich habe die Pfeife nicht mehr probiert. Ich werde es versuchen und dich wissen lassen. Daisha Lynn vor 7 Jahren 0
Es funktionierte. Ich setze das @ auf das `wenn` nicht auf das` für`. Die Zeile sieht also so aus: `for / r% i in (.) Do @if% ~ nxi ==. Git echo% i`. Können Sie bitte eine Antwort mit Ihrem Vorschlag erstellen, damit ich sie annehmen kann? Daisha Lynn vor 7 Jahren 0
Erledigt. Antwort gegeben DavidPostill vor 7 Jahren 0

1 Antwort auf die Frage

0
DavidPostill

The following batch file I wrote demonstrates what I want

but I would like to know if there's a way to do it without a batch file.

@echo off for /r %%i in (.) do if %%~nxi==.git echo %%i 

You can do this from the command line by making the following changes:

  1. Replace %% with %

  2. Replace if with @if` to remove superfluous output

So the command becomes:

for /r %i in (.) do @if %~nxi==.git echo %i 

If the output is more than one screenfull you can either:

  • Pipe the output to more

    for /r %i in (.) do @if %~nxi==.git echo %i | more 

Or:

  • Redirect the output to a file and examine it later.

    for /r %i in (.) do @if %~nxi==.git echo %i > output.txt more output.txt