有没有一种方法可以将这个命令的输出(假设只找到一个文件)传送到 vi。我想找到这个命令,然后在vi中调用它。
谢谢。
find . -name 'id.properties'
Run Code Online (Sandbox Code Playgroud)
编辑由打印的文件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,反过来,从标准输入 ( -)读取并将其显示为要编辑的文件。
您可以将输出推送到文本文件中并使用 vi 打开它。
find . -name 'id.properties' >> /home/<user>/find.txt
vi /home/<user>/find.txt
Run Code Online (Sandbox Code Playgroud)