Linux find命令优化:筛选含指定内容的txt及所有cmd文件
优化后的find命令方案
直接使用find原生参数结合grep实现需求,无需启动新的Shell解释器,命令如下:
find . \( -name '*.cmd' -o \( -name '*.txt' -exec grep -q 'starter' {} \; \) \) ! \( -path '*/Sub Processes/*' -o -path '*/SubProcesses/*' \)
命令逻辑拆解
- 直接匹配所有
.cmd文件:-name '*.cmd' - 对
.txt文件添加内容校验:通过-exec grep -q 'starter' {} \;检查文件内容是否包含"starter"字符串,-q参数让grep静默执行,只要匹配成功就返回0,find会保留该文件 - 保留原有的目录排除规则:排除位于
Sub Processes和SubProcesses子目录下的所有文件 - 括号分组确保逻辑优先级:外层括号区分「目标文件匹配」和「排除目录」的逻辑,内层括号确保
.txt文件的名称匹配和内容校验同时生效
内容的提问来源于stack exchange,提问作者Blurred_Vision
相关产品推荐
相关产品推荐

