尝试在目录及其子目录中查找具有特定模式的任何文件。我试过:
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 /?
。