我正在尝试命令从当前文件夹中获取所有文件,并且它的子树以后缀结尾,然后它们需要包含以大写字母开头的行,并且!我花了一些钱来寻找解决方案。我只找到了如何打印以大写字母开头的行,但我不知道如何输入“#”;'。
的命令。这是为了查找包含以大写字母开头的行的所有文件。如何添加以查找以!。结尾的行。
find . -type f -exec grep -l "^[A-Z]+*" {} +
答案 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)中很特殊,并且引用了历史。你需要通过使用单引号或通过预先反斜杠来转义它来逃避它。