我试图找出是否有现有的方法可以做到这一点,或者我是否需要一个成熟的脚本。
我只找到关于为一个唯一文件返回 true 或 yes 的线程。然后打印文件grep
会破坏有关文件名的信息。
答案1
正如@steeldriver 所指出的,-l
的选项grep
是最短的解决方案:
grep -l Pattern Directory
将输出包含给定Pattern
.
答案2
如果它是一个列表,您可以读取该列表;如果它是一个目录,您可以循环浏览文件。
while read -r file; do
grep -q PATTERN "$file" && echo "$file contains PATTERN"
done < file.txt
您可以添加 as may 模式和 grep 调用或使用 if 语句。
for file in ./*; do
grep -q PATTERN "$file" && echo "$file contains PATTERN"
done
您可以添加一个测试,以便仅 grep 查找文件并添加更多 grep 或在循环内使用 if 语句。该循环不是递归的,您需要使用 shell 通配符环球星或许空球。实用性寻找据我所知可以更快地做到这一点。当然,上面的解决方案要求您位于文件所在的目录中。