2011-02-01 138 views
11

我在做一个查找$ PWD -name'filename'| vim -将'find'命令的输出重定向到'vim'

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

此外查找的结果给出了标准输出的完整路径。

+0

using`command | vim -`告诉vim从`command`读取输出并将其放入缓冲区。 (而不是打开这些文件。) – idbrii 2011-06-13 05:21:19

+0

@pydave我在你的评论中错过了' - '。重要! – 2013-03-01 14:32:07

+1

@pydave顺便说一句,`vim <(command)`使用Bash进程替换,并且这不仅仅适用于vim。例如看看两个目录之间的差异,使用`diff <(ls -l dir1)<(ls -l dir2)` – 2013-03-01 14:42:33

回答

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

find "$PWD" -name 'filename' -exec vim {} \; 

(您可以删除"$PWD",顺便说一句。find开始从默认当前目录中搜索。)

7

find . -name 'filename' -print0 | xargs -0 vim

也应该工作。你可能想阅读xargs,这是一个很方便的知识。

0

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

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

这开辟了自己的缓冲准备与:next:prev进行导航找到的每个文件。测试OSX,但我相当肯定它也可以在Linux上工作。