您尚未登录。

#1 2020-03-25 14:17:36

loyalpartner
会员
注册时间: 2013-06-04
帖子: 7

locate 如何忽略某些文件夹

alias le=edit_select_locate "$@" #locate edit
function edit_select_locate
{
    local file=$(locate /|fzf -q "$*")
    [[ -e $file ]] && $EDITOR $file
}

我定义一个函数, 使用 locate 和 fzf 配合可以达到快速打开配置文件的效果,
可是这里有一个问题就是 locate / 会有许多干扰项目,例如 vim 里面的 undofile
文件格式如下
/home/lee/.emacs.d/.local/cache/undo-tree-hist/.!home!lee!.emacs.d!.local!straight!repos!org-bullets!org-bullets.el.~undo-tree~.zst
我想在fzf还没从管道接受数据前就过滤掉路径包含 undo-tree-hist 的路径

离线

#2 2020-03-25 14:41:35

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,961
个人网站

Re: locate 如何忽略某些文件夹

man updatedb.conf
要过滤程序输出,用 grep -v。

离线

#3 2020-03-26 10:30:31

loyalpartner
会员
注册时间: 2013-06-04
帖子: 7

Re: locate 如何忽略某些文件夹

感谢大佬的提示,下面是我目前找到的方案
方法有下面几种
1. 通过 fzf -q "!undo-tree-hist keywords"
2. grep -v 过滤
3. updatedb --add-prunepaths /path
4. 编辑 updatedb.conf,  设置 PRUNEPATH 的值

离线

页脚