我想在名称包含另一个字符串且在过去7天内创建的文件中搜索字符串,
我试过:
find . -type f -name '*name_string*' -mtime -7 | grep -ir '*mytext*'
但没用,
请帮忙
最佳答案
你非常接近,但只是错过了xargs
,否则find
的输出只是grep的一堆文本。
find . -type f -name '*name_string*' -mtime -7 | xargs grep -i 'mytext'
通过使用
xargs
可以将文件列表作为grep
应该搜索字符串mytext
的文件集传递。顺便说一下,您可以使用
mytext
而不是*mytext*
如果要搜索多个模式,请在包含
pattern1
的文件名列表中选择pattern2
和name_string
:find . -type f -name '*name_string*' -mtime -7 -print0 | while read -d $'\0' f; do
grep -qi pattern1 "$f" && grep -li pattern2 "$f"
done
即使文件名包含空格,这也应该有效。