我如何通过 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