如何通过文件中的正则表达式打印所有匹配项?

时间:2015-02-12 09:47:46

标签: regex bash file search

我有一个目录/usr/local/,我需要查找该目录中包含与以下正则表达式.*\s-\scopy\s.*匹配的字符串的所有文件。是否可以打印所有这些数学以及它们包含的完整路径文件名?

1 个答案:

答案 0 :(得分:1)

如果你有GNU grep,你可以让grep为你完成所有工作:

grep -R '.*\s-\scopy\s.*' /usr/local

-R开关告诉grep递归到每个目录。默认情况下,grep会将文件名添加到每个输出中。

您可能也想使用-I标志来忽略二进制文件。

顺便说一下,.*在这种情况下是非常无用的,你可以这样做:

grep -R '\s-\scopy\s' /usr/local

如果您的grep不支持-R转换,则完全符合POSIX标准的解决方案是:

find /usr/local -type f -exec grep '[[:space:]]-[[:space:]]copy[[:space:]]' {} +