有人用 ripgrep(rg) 吗?

2021-12-09 11:20:28 +08:00
 hjue

typora 的搜索不好用。

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

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

发现排序功能

rg   --sortr modified keyword 

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

1676 次点击
所在节点    程序员
12 条回复
ynyounuo
2021-12-09 11:53:19 +08:00
我用 ls --time-style='+%d-%m-%Y %H:%M:%S' -l; rg --sortr modified '{keywords}' 试了试好像没啥问题
felixin
2021-12-09 12:01:25 +08:00
silver search
yanbo92
2021-12-09 17:05:42 +08:00
看名字像是搜索死人的
ProPh3t
2021-12-09 17:08:30 +08:00
@yanbo92 rest in peace, `grep`...
Leviathann
2021-12-09 18:21:16 +08:00
@yanbo92 名字的确是要 grep 去死
hjue
2021-12-09 19:01:00 +08:00
@ynyounuo 我用的是 mac ,不支持--time-style ,可能是这个原因导致的。 有时间看看 ripgrep 的代码,找找原因
ynyounuo
2021-12-09 19:05:23 +08:00
@hjue
和 ls 没关系吧,ls -lT 试试
hjue
2021-12-09 19:15:24 +08:00
@felixin ag 怎么支持搜索结果按时间倒排?
hjue
2021-12-10 11:13:59 +08:00
@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
2021-12-10 13:02:25 +08:00
@hjue
rg 是这样设计的而且有人提了类似的 feature request 也没有被 maintainer 认可
https://github.com/BurntSushi/ripgrep/issues/1298

倒是你可以试试他的 workaround 改成一个 function 来用
xieyuheng
2022-01-11 20:42:19 +08:00
还有两个类似的是 ambs ambr ,我经常用这个还有 ag 。

https://github.com/dalance/amber
hjue
2022-01-12 18:34:20 +08:00
@xieyuheng ag 貌似没有排序的功能。

我比较了一下 rg 和 ag 的搜索结果,发现他们两个搜索结果的排序也不相同。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX