使用 Find 命令的结果调用 vi

Edg*_*ase 7 command-line

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

谢谢。

find . -name 'id.properties'
Run Code Online (Sandbox Code Playgroud)

l0b*_*0b0 8

编辑由打印的文件find

find . -name 'id.properties' -exec vi {} +
Run Code Online (Sandbox Code Playgroud)

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

要编辑由打印的文本find

find . -name 'id.properties' | vi -
Run Code Online (Sandbox Code Playgroud)

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


pro*_*201 0

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

find . -name 'id.properties' >> /home/<user>/find.txt
vi /home/<user>/find.txt
Run Code Online (Sandbox Code Playgroud)