在 Linux shell 中,假设我在目录中/dir
,我想在所有子文件夹中递归地查找名称中包含 stringname_string
以及内部包含 string 的所有文件content_string
。name_string
可能位于文件名的开头、中间或结尾。我怎么能这么做呢?
我试图起诉 grep :
grep -r content_string /dir/*name_string*
但到目前为止我还没有那么幸运。
谢谢!
答案1
对于快速解决方案,虽然可能不如其他方法有效,
find /dir -type f -name '*name_string*' -print0 | xargs -0 grep -l content_string
答案2
我认为您可以使用以下 OR 语法:
grep -nriE '.*name_string.*|content_string' /dir
或者做我通常做的事情,即将第一个输出传递grep
到另一个grep
:
grep -nriE '.*name_string.*' /dir | grep -nri 'content_string'