我想搜索一个如下所示的字符串:“tt1234567”在特定文件夹中具有特定文件扩展名的所有文件中
这适用于Linux:
find /media/ -name "*.txt" -exec grep -oa "tt[0-9]\{7\}" {} \;
如何将其重写为批处理? 也许是这样的?
cd C:\media\
dir /S /B *.txt >> [A little code that matches (tt[0-9]{7})] >> c:\blabla.txt
答案 0 :(得分:1)
编辑:删除了可能有问题的报价 编辑:固定代码。
FINDSTR.EXE
未正确实施REGEX标准,因此将[0-9] 0与指定的时间匹配将无法使用AFAIK。
cd C:\media\
for /f %%x in ('dir /S /B *.txt') do (
echo %%x| findstr /r "^tt[0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.[tT][xX][tT]$" >> c:\blabla.txt
)
请勿在{{1}}和%%x
之间添加空格,否则它将无法匹配。
没有必要将|
命令分成三行,为了便于阅读,我这样做了
您可以删除FOR
和(
并将其全部放在一行。
您也可以下载并使用)
。
希望这有帮助!
答案 1 :(得分:0)
cmd.exe
有管道运算符,因此您可以使用
dir /S /B *.txt | findstr "tt[0-9][0-9][0-9][0-9][0.9][0-9][0-9]\.txt$" >> c:\blabla.txt
findstr
默认情况下启用了正则表达式和不区分大小写的选项。findstr
支持{{1}}支持的(非常有限的)正则表达式语法。