当我输入类似的内容时locate myfile.txt
,我得到:
/opt/mydir/myfile1.txt.temp
/opt/mydir/myfile1.txt.temp2
/opt/mydir/myfile1.txt
/opt/mydir/myfile1.txt.temp4
我想vim
进入N
第 -th 个结果路径。如何在不手动输入路径的情况下做到这一点?
答案1
做:
vim "$(sed -n "2 {p;q}" <(locate myfile.txt))"
这里我打开用 找到的第二个换行符分隔的locate myfile.txt
结果vim
。
使其成为一个函数,并输入您的~/.bashrc
:
lovim () { vim "$(sed -n ""$2" {p;q}" <(locate "$1"))" ;}
该函数第一个参数作为要搜索的文件名,第二个参数作为要打开的结果行(文件)的数量vim
。
更加坚固,处理名称中带有换行符的文件名:
lovim () { vim "$(sed -nz ""$2" {p;q}" <(locate -0 "$1"))" ;}
例子:
lovim myfile.txt 3
将从结果中打开第三个文件locate myfile.txt
。
扩展范围:
- 在输入和输出上添加一些健全性检查(如果在输入之前存在所需的行数(文件)
vim
)