shell脚本:通过搜索文件夹中的所有文件来查找字符串?

时间:2015-06-22 23:38:11

标签: bash shell scripting terminal find

如何在包含隐藏文件和子文件夹的文件夹中找到(可能是多个)文件中包含的字符串?

我试过这个命令:

find . -maxdepth 1 -name "tes1t" -print0 | sed 's,\.\/,,g'

但这没有结果。

2 个答案:

答案 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输出的模式JENKINS-27393。这可以通过以下方式实现:

find . -maxdepth 2 -type f -exec grep 'pattern here' '{}' \;

说明:

  • find .在当前目录中执行find
  • -maxdepth 2不再在子目录中下载。
  • -type f查找不是目录的每个文件。
  • -exec grep 'pattern' '{}'执行具有特定模式的grep语句,{}包含找到的每个文件的文件名。

为grep添加选项以突出显示颜色,输出​​行号和/或文件名。

有关详细信息,请参阅man findman grep