使用find命令在文本编辑器中打开多个文件

ova*_*g25 2 unix vim shell perl

我试图使用此命令从命令行打开vim中的多个文件.出于某种原因,我会得到一个错误,你将在下面看到.

 $ find . -name edit.html.erb  \
     | perl -pi -e 's/^..//'   \
     | perl -pi -e 's/\n$/ /'  \
     | vim
Run Code Online (Sandbox Code Playgroud)

当我在没有"| vim"的情况下运行它时,如以下命令:

 $ find . -name edit.html.erb  \
     | perl -pi -e 's/^..//'   \
     | perl -pi -e 's/\n$/ /'
Run Code Online (Sandbox Code Playgroud)

得到这个输出:

 addresses/edit.html.erb claims/edit.html.erb emails/edit.html.erb owners/edit.html.erb packages/edit.html.erb users/edit.html.erb vessels/edit.html.erb voyages/edit.html.erb %
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,可能与输出结尾处的"%"标记有关.

这是输出和错误:

 Vim: Warning: Input is not from a terminal
 Vim: Error reading input, exiting...
 Vim: preserving files...
 Vim: Finished.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?不知道哪个部分导致错误,因为我是一个新手,但任何帮助将不胜感激!

ike*_*ami 9

您将文件的内容作为键盘输入传递.我认为你想要做的是vim打开文件启动.我不知道vim,但通常通过将文件名作为参数传递来实现.

在bash中,人们可以使用:

vim $( find . -name edit.html.erb | perl -pe's/^..//' | perl -pe's/\n$/ /' )
Run Code Online (Sandbox Code Playgroud)

(删除了无意义的使用-i.)

实际上,将换行更改为空格是没用的,删除前导也是如此./,所以您只需要:

vim $( find . -name edit.html.erb )
Run Code Online (Sandbox Code Playgroud)