重定向'的输出;查找';命令到';vim';

重定向'的输出;查找';命令到';vim';,vim,redirect,find,Vim,Redirect,Find,我正在查找$PWD-name“filename”| vim- 希望在vim编辑器中打开文件名。但它不起作用。 在这种情况下,我确信只存在一个名为“filename”的文件 另外,find的结果给出了stdout上的完整路径 vim "$(find "$PWD" -name 'filename')" 或 (顺便说一下,您可以删除“$PWD”。find默认情况下从当前目录开始搜索。)find-名称“filename”-print0|xargs-0 vim 也应该有效。您可能想了解xargs,这是一

我正在查找$PWD-name“filename”| vim-

希望在vim编辑器中打开文件名。但它不起作用。 在这种情况下,我确信只存在一个名为“filename”的文件

另外,find的结果给出了stdout上的完整路径

vim "$(find "$PWD" -name 'filename')"


(顺便说一下,您可以删除
“$PWD”
find
默认情况下从当前目录开始搜索。)

find-名称“filename”-print0|xargs-0 vim


也应该有效。您可能想了解xargs,这是一件很方便的事情。

在@idbrii的评论中提到,但我最喜欢的是:

find . -name 'filename' -type f -exec vim {} \+

这将打开在其自己的缓冲区中找到的每个文件,以便使用
:next
:prev
进行导航。在OSX上测试过,但我相当肯定它也能在Linux上工作。

我发现的一种方法非常简单,就是用backticks(大多数键盘上的波浪号下的字符)封装find命令并将其传递给vim

vim `find . -name myfile`

实际上,您可以对任何命令使用backtick来获取命令的文本字符串输出。

使用
command | vim-
告诉vim从
command
读取输出并将其放入缓冲区。(与打开这些文件相反。)@pydave我没有看到你评论中的“-”。重要@顺便说一句,
vim这对我不起作用<代码>查找-名称“utility”-print0 | xargs-0 vim
打开一个新文件,该文件的名称是find输出的串联。这是OSX上的。OP指定只有一个匹配的文件。因此,我的反对意见减少了。这对我不起作用
vim“$(find“$PWD”-name'filename')”
打开一个新文件,该文件的名称是find输出的所有文件名的串联。这在OSX上。您可能希望使用
+
来连接结果,而不是
要在结束查找时对单个结果进行操作:
find“$PWD”-name'filename'-exec vim{}+
应该在一个vim实例中打开文件(因此它们可以从
:args
访问),“顺便说一句,您可以删除“$PWD”-注意,如果需要完整路径(而不是相对路径),添加$PWD可能会有所不同。(就像你正在把结果写入一个文件。)@JonathanHartley:这不起作用,因为你引用了输出。如果您不引用输出(并且文件名中没有空格),它是否有效?无论如何,您最好使用
-exec
(使用
+
)。@JonathanHartley:在上一个示例中(使用+),您还可以使用
vim-o
以拆分方式打开它们(另请参见
-o
-p
)。另外,你不需要逃避+因为它对bash没有任何特殊意义。这个答案怎么会没有更多的选票?!?和蔼可亲!
vim `find . -name myfile`