一起使用find grep

时间:2016-03-10 10:03:32

标签: bash shell sh

我正在尝试命令从当前文件夹中获取所有文件,并且它的子树以后缀结尾,然后它们需要包含以大写字母开头的行,并且!我花了一些钱来寻找解决方案。我只找到了如何打印以大写字母开头的行,但我不知道如何输入“#”;'。

的命令。

这是为了查找包含以大写字母开头的行的所有文件。如何添加以查找以!。结尾的行。

find . -type f -exec grep -l "^[A-Z]+*" {} +

3 个答案:

答案 0 :(得分:1)

您可以在grep中使用此正则表达式:

find . -type f -exec grep -El '^[[:blank:]]*[A-Z].*![[:blank:]]*$' {} +

答案 1 :(得分:0)

以下语法将非常有用。如果问题正确,这就是您的解决方案:

find . -type f -name '*!.*' -exec grep -l "^[A-Z]+*" {} +

答案 2 :(得分:0)

find . -type f -name '*suffix' -print0 | xargs -r0 grep -le '^[A-Z].*!$'应该做你想做的事。

find所有带有后缀名称(-type f)的文件(-name '*suffix'),并使用grep将这些文件提供给xargs。然后,正则表达式找到以大写字母开头并以感叹号结尾的行。

这里的问题主要是引用。 !在bash(和其他shell)中很特殊,并且引用了历史。你需要通过使用单引号或通过预先反斜杠来转义它来逃避它。