我想在名称包含另一个字符串并且在过去 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
这甚至适用于包含空格的文件名。
不需要 xargs 或其他非标准扩展来具有良好的文件名处理:
find . -type f -name '*name_string*' -mtime -7 -exec grep -i 'mytext' {} \;