是否可以find
仅在找到结果时才输出 Windows 命令?有这样简单的搜索命令:
find "str1" *.*
无论是否找到“str1”字符串,find 总是输出扫描的文件名,如下所示:
---------- FILE1.TXT
---------- FILE2.TXT
This is a line in file2.txt that contains str1.
---------- FILE3.TXT
我只想看到包含字符串“str1”的文件。
答案1
使用findstr
而不是find
只获取匹配的文件名和行内容。或者使用它只获取包含任意数量匹配项的任何文件的文件名。
该解决方案不需要复杂的批处理逻辑或将find
命令放入循环中来解析输出等以获得预期结果。
命令1
findstr "str1" *.*
输出
File.txt:"something","str1","something else"
File.txt:"str1","same file","different line"
File2.txt:"some line","str1","different file"
File9.txt:"another line","different file","str1
输出解释
File.ext:display whole line containing matching string
笔记: 每次在任何文件中找到匹配字符串的每一行时,都会显示文件名 - 并且还会显示找到匹配字符串的行内容。
命令 2
findstr /M "str1" *.*
输出
File.txt
File2.txt
File9.txt
笔记: 对于内容中包含任何匹配字符串的每个匹配文件,这仅显示文件名,且仅显示一次。
支持资源
-
/I Case-insensitive search. /S Search subfolders.
答案2
您只需find . -name 'str1'
在当前目录中使用递归搜索即可。