Windows 相当于 ls *(星号)目录通配符?

Ogr*_*m33 15 windows search command-line

另一个问题来自一位长期处于 Windows 世界的 Unix/Linux 用户。首先让我解释一下我想要做什么。我正在使用 Windows cmd.exe shell,我想列出当前目录下包含 bin\Debug 层次结构的所有目录,并确定它们是否包含任何文件(例如:试图确定我的 NAnt clean 目标是否是好好工作)。我的层次结构可能如下所示:

\Current
    \DirA
         \bin
             \Debug
                  (some files under debug)
             \Release
    \DirB
         \bin
             \Debug
    \DirC
         \bin
             \Release
Run Code Online (Sandbox Code Playgroud)

在 Unix 中,ls */bin/Debug只会给我一个 中所有内容的列表DirA/bin/Debug,并向我展示DirB/bin/Debug空的事实。我在 cmd shell 中尝试了不同的扭曲,但不断地总结如下:

    > dir *\bin\Debug
    文件名、目录名或卷标语法不正确。

    > 目录 *\*\*
    文件名、目录名或卷标语法不正确。

我对 dir 命令有什么微妙的地方不了解,还是仅限于这种方式?

是的,我意识到我可以切换到资源管理器、导航、右键单击,并且可能最终会根据我的需要进行搜索,但我对快速n-dirty 命令行解决方案更感兴趣。

jam*_*mes 13

像这样的事情应该做你想做的。在项目类型的根目录下:


c:\path\to\slndir>dir *.dll *.exe /s /b | findstr /i "bin\debug"
Run Code Online (Sandbox Code Playgroud)

目录参数:/s - 递归,/b - “裸”,没有额外信息
findstr 参数:/i - 忽略大小写

通常,'help command ' 会显示 shell 命令的帮助信息。如果这不起作用,那么
'命令/?' 一般会显示帮助。


Mar*_*som 8

Windows 不像 Linux 那样使用通配符。只有文件名部分可以包含通配符。

您可以下载在 Windows 上运行的 ls 版本并使用它。我用过Cygwin,但我确定还有其他的。

  • 要记住的另一件事:在 Windows 中,通配符由命令扩展,而不是由 shell 扩展。 (3认同)