V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hjue
V2EX  ›  程序员

有人用 ripgrep(rg) 吗?

  •  
  •   hjue · 364 天前 · 1271 次点击
    这是一个创建于 364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    typora 的搜索不好用。

    一直在用 ripgrep 搜索我的 md 文档,非常好用。

    今天想对搜索结果时间倒排,找到含有关键字的最新文章。

    发现排序功能

    rg   --sortr modified keyword 
    

    发现搜索结果并不是按文件修改时间倒排,有谁知道是哪里的问题吗?

    12 条回复    2022-01-12 18:34:20 +08:00
    ynyounuo
        1
    ynyounuo  
       364 天前
    我用 ls --time-style='+%d-%m-%Y %H:%M:%S' -l; rg --sortr modified '{keywords}' 试了试好像没啥问题
    felixin
        2
    felixin  
       364 天前 via Android
    silver search
    yanbo92
        3
    yanbo92  
       364 天前 via iPhone
    看名字像是搜索死人的
    ProPh3t
        4
    ProPh3t  
       364 天前
    @yanbo92 rest in peace, `grep`...
    Leviathann
        5
    Leviathann  
       364 天前
    @yanbo92 名字的确是要 grep 去死
    hjue
        6
    hjue  
    OP
       364 天前
    @ynyounuo 我用的是 mac ,不支持--time-style ,可能是这个原因导致的。 有时间看看 ripgrep 的代码,找找原因
    ynyounuo
        7
    ynyounuo  
       364 天前
    @hjue
    和 ls 没关系吧,ls -lT 试试
    hjue
        8
    hjue  
    OP
       364 天前
    @felixin ag 怎么支持搜索结果按时间倒排?
    hjue
        9
    hjue  
    OP
       363 天前
    @ynyounuo 一个目录下排序没有问题。包含子目录有问题。

    相关代码在这里 https://github.com/BurntSushi/ripgrep/blob/9f924ee187d4c62aa6ebe4903d0cfc6507a5adb5/crates/core/args.rs

    ```
    match self.kind {
    SortByKind::None => {}
    SortByKind::Path => {
    if self.reverse {
    builder.sort_by_file_name(|a, b| a.cmp(b).reverse());
    } else {
    builder.sort_by_file_name(|a, b| a.cmp(b));
    }
    }
    SortByKind::LastModified => {
    builder.sort_by_file_path(move |a, b| {
    sort_by_metadata_time(a, b, self.reverse, |md| {
    md.modified()
    })
    });
    }
    SortByKind::LastAccessed => {
    builder.sort_by_file_path(move |a, b| {
    sort_by_metadata_time(a, b, self.reverse, |md| {
    md.accessed()
    })
    });
    }
    SortByKind::Created => {
    builder.sort_by_file_path(move |a, b| {
    sort_by_metadata_time(a, b, self.reverse, |md| {
    md.created()
    })
    });
    }
    }
    ```
    ynyounuo
        10
    ynyounuo  
       363 天前
    @hjue
    rg 是这样设计的而且有人提了类似的 feature request 也没有被 maintainer 认可
    https://github.com/BurntSushi/ripgrep/issues/1298

    倒是你可以试试他的 workaround 改成一个 function 来用
    xieyuheng
        11
    xieyuheng  
       331 天前
    还有两个类似的是 ambs ambr ,我经常用这个还有 ag 。

    https://github.com/dalance/amber
    hjue
        12
    hjue  
    OP
       330 天前
    @xieyuheng ag 貌似没有排序的功能。

    我比较了一下 rg 和 ag 的搜索结果,发现他们两个搜索结果的排序也不相同。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4865 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.