如何通过正则表达式在文件中打印所有匹配项?
How can I print all matches by regex in files?
我有一个目录 /usr/local/
,我需要在该目录中找到所有包含与以下正则表达式 .*\s-\scopy\s.*
匹配的字符串的文件。是否可以打印所有此类数学及其包含的完整路径文件名?
如果您有 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:]]' {} +
我有一个目录 /usr/local/
,我需要在该目录中找到所有包含与以下正则表达式 .*\s-\scopy\s.*
匹配的字符串的文件。是否可以打印所有此类数学及其包含的完整路径文件名?
如果您有 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:]]' {} +