按内容过滤文件列表

按内容过滤文件列表

我得到一个命令foo,该命令输出由新行分隔的文件列表。

如何使用正则表达式按内容过滤这些文件,并输出过滤后的文件列表?

答案1

如果你的系统有 GNU xargs,你可以这样做

foo | xargs -d '\n' grep -l regex

答案2

bash

foo |
    while IFS= read -r file; do
        grep -qE "$regex" "$file" && printf '%s\n' "$file"
    done

如果你grep不明白-q那么你可以使用

grep -E "$regex" "$file" >/dev/null 2>&1

反而。

相关内容