1

我想在名称包含另一个字符串并且在过去 7 天内创建的文件中搜索字符串,

我试过:

find . -type f -name '*name_string*' -mtime -7 | grep -ir '*mytext*'

但是没用,

请帮忙

4

2 回答 2

2

你真的很接近,但只是错过了xargs,否则输出find只是一堆用于 grep 的文本。

find . -type f -name '*name_string*' -mtime -7 | xargs grep -i 'mytext'

通过使用,您将文件列表作为应该搜索字符串xargs的文件集传递。grepmytext

顺便说一句,您可以只使用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

这甚至适用于包含空格的文件名。

于 2013-03-16T07:21:30.637 回答
1

不需要 xargs 或其他非标准扩展来具有良好的文件名处理:

find . -type f -name '*name_string*' -mtime -7 -exec grep -i 'mytext' {} \;
于 2013-03-16T11:21:51.037 回答