Как получить список полных путей каждой подпапки .git в дереве каталогов?

350
Daisha Lynn

Я не могу определить правильный набор команд в командной строке Windows FOR /? или bash ls, чтобы сделать это.

Следующий пакетный файл, который я написал, демонстрирует, чего я хочу, но я хотел бы знать, есть ли способ сделать это без пакетного файла.

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

Похоже, я должен быть в состоянии выполнить команду DIR с комбинацией / s / b и / ad, чтобы сделать это. Я готов фильтровать через grep или FIND, если мне нужно.

Очевидно, мне не нужно решение, которое требует сценария, поскольку у меня уже есть это, как показано выше.

Кроме того, Powershell может быть кандидатом, если это простая команда.

1
Замените `%%` на `%`, чтобы использовать командную строку: `for / r% i в (.) Делать, если% ~ nxi ==. Git echo% i` DavidPostill 6 лет назад 0
Это не сработает. Если у вас есть тысячи файлов и каталогов, вы увидите прокрутку тысяч строк, и вы вряд ли увидите ту, где эхо отсутствует. Вы должны были бы повторить >> в некоторый файл и «напечатать» этот файл. Кажется болезненным Daisha Lynn 6 лет назад 0
Вы можете настроить эту команду так, чтобы она отображала только то, что вы хотите (используя `@`), и направляла `|` вывод в `more ' DavidPostill 6 лет назад 0
Дэвид, я попробовал трюк "@", прежде чем опубликовать этот вопрос. Это не сработало. Я не пробовал трубу больше трюк. Я попробую это и дам вам знать. Daisha Lynn 6 лет назад 0
Это сработало. Я ставлю `@` на `if`, а не на` for`. Поэтому строка выглядит так: `for / r% i in (.) Do @if% ~ nxi ==. Git echo% i`. Можете ли вы создать ответ с вашим предложением, чтобы я мог принять его? Daisha Lynn 6 лет назад 0
Готово. Ответ предоставлен. DavidPostill 6 лет назад 0

1 ответ на вопрос

0
DavidPostill

Следующий пакетный файл, который я написал, демонстрирует, чего я хочу

но я хотел бы знать, есть ли способ сделать это без командного файла.

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

Вы можете сделать это из командной строки, внеся следующие изменения:

  1. Заменить %%на%

  2. Замените ifна @if`, чтобы удалить лишний вывод

Таким образом, команда становится:

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

Если результат больше одного экрана, вы можете:

  • Передайте вывод more

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

Или же:

  • Перенаправьте вывод в файл и проверьте его позже.

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