使用命令行查询索引文本文件内容

使用命令行查询索引文本文件内容

我每天都会在一个纯文本文件中做笔记,并以 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。

抱歉,不是命令行,但仍然值得一看。

相关内容