使用Find命令的结果来调用vi

有没有办法可以将此命令的输出(假设只找到一个文件)传递给vi。 我想找到这个命令,然后在vi中调用它。

谢谢。

find . -name 'id.properties' 

要编辑由find打印的文件

 find . -name 'id.properties' -exec vi {} + 

在简单的英语中,它查找当前目录( . )中的路径以及基本名称为id.properties所有子目录。 使用这些文件,它运行 vi file1 file2 [...]命令( -exec vi {} + )。 如果有很多文件(通常是数千个),它甚至可能运行多个vi命令,每个命令都有一堆文件,以便能够将命令放入系统的最大命令长度。 要强制它为每个文件运行命令,你可以使用\; 而不是+

要编辑由find打印的文本

 find . -name 'id.properties' | vi - 

会将找到的任何文件的路径(相对于当前目录) 写入 (因为默认情况下find在末尾有一个隐藏的-print )到其标准输出,该输出连接( | )到vi的标准输入。 反过来, vi从标准输入( - )读取并显示为要编辑的文件。

您可以在文本文件中推送输出并使用vi打开它。

 find . -name 'id.properties' >> /home//find.txt vi /home//find.txt 

这个答案似乎最直接。 对于你的情况,它将是:

 vim $(find . -name 'id.properties')