【发布时间】:2013-05-04 05:13:24
【问题描述】:
我想在文件中搜索一个字符串并将生成的文件列表通过管道传递给 OSX 的“打开”命令,从而打开所有包含该字符串的文件,以便在其默认编辑器(也不是 vim)中进行编辑。
例如,运行:
find . -name "*.txt" | xargs grep -l "RANDOMSTRING"
可能会返回:
./folder1/file1.txt
./folder1/file2.txt
./folder2/file3.txt
./file4.txt
但是,简单地将这个列表传递给 open 命令会失败:
find . -name "*.txt" | xargs grep -l "RANDOMSTRING" | open
我认为这是因为“换行符”或“回车符”,因为运行:
open ./folder1/file1.txt ./folder1/file2.txt ./folder2/file3.txt ./file4.txt
有效。
我只是不确定如何从返回的输出中删除换行符并将其传递给 open 命令。我需要另一个命令来管道输出,它将正确格式化文件列表,然后将列表传递给打开命令。虽然换行符甚至可能不是问题。
附: - 我不想创建一个临时文件来执行此操作。但是,我愿意创建 .zshrc 或 .bashrc 函数。
【问题讨论】:
-
尝试在最后一个管道中使用
xargs open? -
@abasu。做到了。您应该提交一个答案,以便我将其标记为正确。如果你不这样做,我会这样其他人可以看到如何做到这一点。
-
谢谢 :) 我发布了答案。
标签: file file-io command-line grep pipe