我每天都会在一个纯文本文件中做笔记,并以 YYYYMMDD 格式标记日期。这些文件不超过 100 行,并且采用博客风格的格式编写。
我希望能够搜索这些文件,就好像它们是谷歌索引的博客文章一样,使用一些短语查询返回最相关/最近的日期文件名,并包含相关部分的片段。
理想情况下应该是这样的:
#searchindex "laptop no sound"
返回:
20100909.txt:
...笔记本电脑声音不起作用……
20100101.txt
...声音太吵了……辩论什么笔记本电脑买…
等等等等。
我在 Linux 平台上工作(Debian 和 GNOME)。我看过 Beagle 和 Tracker,但它们似乎完全不符合我的要求。
编辑:许多建议都包括 grep,但我希望它更强大一些,考虑到关键字、日期等的接近性。许多这些文件将具有类似的关键字,因此仅使用 grep 会得到太多结果。我不介意索引的额外开销。
答案1
您可以在函数grep
中使用bash
它:
函数搜索索引() { 如果 [ “$#” -gt 0 ] ; 然后 ls -t | xargs -L1 grep -H -C3 --`echo“$@”| sed's/ /\\\|/g'` 菲 }
-C3
上下文的行数是多少,如果您只想要匹配的行,您可以将其删除。
答案2
另一个选择是使用一瞥。
它是一个索引器,因此您首先必须建立索引:
glimpseindex -B -H {Directory for index} -f
然后您可以使用 glimpse 命令以相当强大的方式搜索文件。
Glimpse 虽然比较老了,但是对我来说它还是有用的。
答案3
简单的 grep 能满足您的要求吗?
$ egrep "笔记本电脑|声音" *txt 20100101.txt:声音太大……正在考虑买什么笔记本电脑 20100505.txt:寂静之声 20100606.txt:我刚买了一台新笔记本电脑 20100909.txt:笔记本电脑声音不工作 $ egrep "笔记本电脑。*声音|声音。*笔记本电脑" *txt 20100101.txt:声音太大……正在考虑买什么笔记本电脑 20100909.txt:笔记本电脑声音不工作 $ grep laptop *txt | grep sound 20100101.txt:声音太大……正在考虑买什么笔记本电脑 20100909.txt:笔记本电脑声音不工作
答案4
Google-Desktop-Linux 可在 Debian 存储库中找到,它可以满足您的需求。如果您无法使用默认热键调出搜索框,请使用此修复。您可以限制索引的文件类型和位置,以免超负荷。在决定使用 Google Desktop 之前,我尝试过 Beagle 和 Tracker。
抱歉,不是命令行,但仍然值得一看。