使用 grep 查找文件并使用管道/打开来打开它们

使用 grep 查找文件并使用管道/打开来打开它们

我如何通过 grep 管道文件来打开所有匹配的文件?

我已尝试过grep -li "type" * | open,但是没有用。

答案1

有很多方法可以做到这一点(使用 find/exec、xargs 等),其中一种可能是:

grep -li "type" * | while read file; do echo "processing $file"; done

答案2

IFS=$'\n'; for i in $(grep -rli "type" *); do open "$i"; done

IFS 是必需的,这样它就不会分割包含空格的文件名。

答案3

使用 while read 行循环:

| while read line

如果

$ grep -l something *.py
file1.py
file2.py

然后

$ grep -l something *.py | while read line ; do open "$line" ; done

相当于

$ open "file1.py"
$ open "file2.py"

使用引号"$line"代替仅$line允许它匹配包含空格的文件名,否则带有空格的文件名将导致错误。
请注意,这line只是此用法中变量的常用名称。它也可以很容易地

$ grep -l something *.py | while read potato ; do open "$potato" ; done

相关内容