我想在名称包含另一个字符串且在过去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的文件名列表中选择pattern2name_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

即使文件名包含空格,这也应该有效。

07-25 23:47
查看更多