如何获取目录树中每个.git子文件夹的完整路径列表?


1

我无法在Windows命令提示符FOR /中找出正确的命令集。或者bash ls这样做。

我编写的以下批处理文件演示了我想要的内容,但我想知道是否有办法在没有批处理文件的情况下执行此操作。

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

似乎我应该能够使用/ s / b和/ ad的组合发出DIR命令来执行此操作。如果需要,我愿意通过grep或FIND过滤。

我显然不需要一个需要脚本的解决方案,因为我已经有了如上所示的那个。

此外,Powershell可能是一个候选人,只要它是一个简单的命令。


更换%%%使用命令行:for /r %i in (.) do if %~nxi==.git echo %i
DavidPostill

那不行。如果你有1000个文件和目录,你会看到1000个行滚动,你很难看到它回显出来的那个。你必须回复>>到一些文件和文件输出的'类型'。似乎很痛苦。
Daisha Lynn

{shrug}你可以调整那个命令,只回显你想要的东西(使用@)并|输出到more
DavidPostill

大卫,在我发布这个问题之前,我确实试过了“@”技巧。它没用。我没有尝试过更多的窍门。我会试着告诉你。
Daisha Lynn

有效。我把它@放在了if不上for。所以这条线看起来像这样:for /r %i in (.) do @if %~nxi==.git echo %i。你能否根据你的建议建立一个答案,以便接受它?
Daisha Lynn

Answers:


0

我编写的以下批处理文件演示了我想要的内容

但我想知道是否有办法在没有批处理文件的情况下完成。

@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

如果输出超过一个screenfull,您可以:

  • 将输出管道输送到 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
    

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.