我正在寻找一个搜索工具(来自 Ubuntu 14.04 桌面)或方法/命令(终端),它允许我在文件名中搜索完整或部分单词,以任何顺序,不考虑大小写。
你知道吗?
以下是我需要做的一个例子。我知道在某个地方/home/myusername
我有一个文件,其名称包含单词“personal”、“income”、“tax”、“state”。但我记不清文件名是否
state personal income tax return.doc
或者personal Income Tax return - state.doc
或者income tax return - State - personal.doc
。
而且我也记不住有些单词是否大写。另外,我还有无数个包含每个单词的文件。因此,仅对其中一个单词进行简单搜索(例如仅搜索“state”或仅搜索“tax”)对我没有多大帮助,因为它会返回太多文件。
理想情况下,我希望能够只输入 [income state return] 或 [state income return],然后让它返回文件名中包含所有三个单词的文件,而不管大小写或单词顺序如何。最好使用 GUI 工具,但终端方法也可以。
我尝试过 Catfish 和 gnome-search-tool/“搜索文件”——它们似乎都不能用于多个搜索词,除非这些词是按照它们在文件名中出现的顺序输入的,并且搜索词之间没有其他词。
答案1
不要使用grep
!find
具有完美的文件名匹配语法。要使用您的示例:
find [PATH...] -iname '*personal*' -iname '*income*' -iname '*tax*'
其中[PATH...]
有零个或多个需要搜索的路径。
如果你没有禁用mlocate
文件名数据库,使用它进行更快的搜索可能会更快。你甚至可以让它查找多个连词使用-A
/--all
选项搜索术语:
locate -i -A -b income personal tax
答案2
答案3
我通常在主目录中进行
find . | grep 'SEARCHTERM1\|SEARCHTERM2'
答案4
如果在使用 caja 或 nautilus 时,单击大搜索图标,输入您所说的单词,然后单击小搜索图标,它将对这些单词进行 AND 文件名搜索。xxx-seach-tool 的错误在于阻止多个“名称包含”选项行。告诉他们。