如何在包含隐藏文件和子文件夹的文件夹中找到(可能是多个)文件中包含的字符串?
我试过这个命令:
find . -maxdepth 1 -name "tes1t" -print0 | sed 's,\.\/,,g'
但这没有结果。
答案 0 :(得分:3)
grep -Hnr PATTERN .
如果你的grep支持-r
(递归,= -d recurse
)。注意那时递归深度没有限制。
或试试grep -d skip -Hn PATTERN {,.[!.]}*{,/{,.[!.]}*}
;这应该工作,因为grep接受多个文件参数。如果您的-d skip
版本不支持,请丢弃grep
内容。对于没有大括号扩展的shell,请使用手动展开的表单* */* */.[!.]* .[!.]* .[!.]*/* .[!.]*/.[!.]*
。
答案 1 :(得分:0)
首先,您的maxdepth
应该是2
而不是1
,现在您的find命令不会下降到子目录中。此外,您只需grep就find
输出的模式JENKINS-27393。这可以通过以下方式实现:
find . -maxdepth 2 -type f -exec grep 'pattern here' '{}' \;
说明:
find .
在当前目录中执行find
。-maxdepth 2
不再在子目录中下载。-type f
查找不是目录的每个文件。-exec grep 'pattern' '{}'
执行具有特定模式的grep
语句,{}
包含找到的每个文件的文件名。为grep添加选项以突出显示颜色,输出行号和/或文件名。
有关详细信息,请参阅man find
和man grep
。