在 Windows 命令行上查找具有特定模式的文件名?

在 Windows 命令行上查找具有特定模式的文件名?

尝试在目录及其子目录中查找具有特定模式的任何文件。我试过:

C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found

希望找到类似

abc.txt.r12222
tjy.java.r9994

在字母 r 后面附加一个数字,由 SVN 完成。

我究竟做错了什么?

答案1

几天前我刚刚在 Stack Overflow 上回答了这个问题。 https://stackoverflow.com/questions/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

对于你来说,它看起来应该是这样的:

dir * /s/b | findstr \.r[0-9]*[0-9]$

更新

请注意,另一个示例(“.r[0-9]*$”)中的 * 查找数字范围 [0-9] 中的全部或不查找,因此它还会查找以“r”结尾的记录,这是意料之外的。

我原来的答案在数字后使用了 RegEx +,但正如 @ScottChu 指出的那样,这不是一个选择findstr

该答案也已使用 @ndreisg 的评论变体进行了更新,该变体也有效,但是,$最后仍然需要确保匹配以数字结尾并且不会在字符串中间找到它。

西弗吉尼亚海岸

此外,除了安装GNU grep,您现在可以安装适用于 Linux 的 Windows 子系统

答案2

我对您的建议是使用grep- 一个已移植到 Windows 的类 UNIX 系统的实用程序,它可以使用正则表达式匹配行。

grep包含在 MinGW 的 MSYS 包中,安装程序可以在这里. (仅安装 MSYS)

然后你必须将 MSYS 工具添加到你的 PATH 变量中,MSYS 的最终目录是C:\MinGW\msys\1.0\bin

最后,您可以使用以下命令进行搜索:

ls -a | grep ^.+\..+\.r[0-9]+$

... 这意味着:“从ls -a(包括隐藏文件的文件列表)获取输出并将其传递给grep,匹配如下行.r[0-9]*(每个星号至少代表一个字符)”。

答案3

请尝试导航到 findstr 所在的 c:\windows\system32,然后执行建议的命令。

答案4

您可以尝试以下操作:

dir /a| findstr .r[0-9]*$

如需帮助,请输入findstr /?

相关内容