一起使用 find grep

Using find grep together

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

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

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

您可以在 grep:

中使用此正则表达式
find . -type f -exec grep -El '^[[:blank:]]*[A-Z].*![[:blank:]]*$' {} +

以下语法会很有用。如果我答对了问题,这就是适合您的解决方案:

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

find . -type f -name '*suffix' -print0 | xargs -r0 grep -le '^[A-Z].*!$' 随心所欲。

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

这里的问题主要是引用。 ! 在 bash (和其他 shell)中是特殊的,指的是历史。您需要通过使用单引号或在前面加上反斜杠来转义它。