我想在特定文件夹中具有特定文件扩展名的所有文件中搜索如下所示的字符串:“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
我想在特定文件夹中具有特定文件扩展名的所有文件中搜索如下所示的字符串:“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
编辑:删除了可能有问题的引号。
编辑:固定代码。
FINDSTR.EXE
没有正确实现 REGEX 标准,因此通过指定的次数匹配 [0-9] 0 将无法正常工作。
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
)
%%x
和之间不要加空格|
,否则会不匹配。
没有必要将FOR
命令分成三行,我这样做只是为了便于阅读。
您可以删除(
并将)
其全部放在一行上。
或者,您可以下载并使用SED
.
希望这可以帮助!
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
记录在TechNet Library中。