是否有命令可以允许在具有特定扩展名的目录下的文件中搜索关键字?
该字符串grep -irn "string" ./path
对目录下的所有文件进行递归搜索./path
。我的具体要求是搜索以下./path
扩展名下的所有文件,例如*.h
答案1
经过一些尝试,我认为grep -irn 'string' --include '*.h'
更方便
答案2
年代et(打开)什艾尔选择使用globstar
命令
shopt -s globstar
这将导致**
文件名组件表示此处及下方的所有内容。因此path/**
表示path
目录 中的所有内容及其子目录. (您无需./
在此处输入。)然后您可以使用
grep -in "string" path/**/*.h
搜索.h
及 以下的所有文件path
。
你可以你nset 选项与shopt -u
。
答案3
find /path -iname "*.h" -exec grep -inH "string" "{}" \;
答案4
这个如何?
find -L ./path -name "*.h" -exec grep -in "string" {} \;
解释:
- -L :跟踪符号链接
- -name :使用星号,你可以描述扩展
- -in :与您的建议相同,但“r”被命令
find
替换 - {} :代表
find
命令的结果 - \; :如果
find
与结合-exec
,则这是命令结束说明符