我得到一个命令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
反而。