批量搜索正则表达式的文件内容

时间:2012-10-20 18:22:29

标签: batch-file

我想搜索一个如下所示的字符串:“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

2 个答案:

答案 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}}支持的(非常有限的)正则表达式语法。