返回内容包含特定模式的文件的名称(在目录或列表中)

返回内容包含特定模式的文件的名称(在目录或列表中)

我试图找出是否有现有的方法可以做到这一点,或者我是否需要一个成熟的脚本。

我只找到关于为一个唯一文件返回 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 通配符环球星或许空球。实用性寻找据我所知可以更快地做到这一点。当然,上面的解决方案要求您位于文件所在的目录中。

相关内容