有类似的 CLI 工具吗gnome-search-tool
?我正在使用locate
,但我更喜欢它对目录名称匹配的结果进行分组。我得到很多路径匹配的结果,这不是我想要的:
/tmp/dir_match/xyz
/tmp/dir_match/xyz2/xyz3
它需要足够快,因此需要使用搜索索引。
答案1
弗兹夫是一个通用的命令行模糊查找器。
他们的 github 页面是https://github.com/junegunn/fzf
答案2
标准 Linux 命令是:
find
命令查找文件名,例如:查找名为 xyz 的文件
/tmp
$ find /tmp -type f -name xyz
查找名称包含“xyz”的目录
/tmp
$ find /tmp -type d -name '*xyz*'
find 和 grep 命令用于搜索文件内容,例如:
查找
/tmp
包含 xyz 的文件$ find /tmp -type f -exec grep -l xyz {} \;
答案3
locate
非常通用,可以采用 -r 和正则表达式模式,因此您可以进行许多复杂的匹配。例如,要匹配目录a
a0
a1
等,请使用'/a[0-9]*/'
.这只会显示其中包含文件的目录,因为您需要/
路径中的第二个目录。要单独匹配目录,请使用$
将模式锚定到路径的末尾,'/a[0-9]*$'
.
请注意,至少有 2 个版本locate
,其中一个来自GNU,以及 Redhat 的一个(称为 mlocate)。用于--version
查找您拥有的。它们的正则表达式风格略有不同。例如,如果我们将上述模式更改'/a[0-9]*$'
为 use+
而不是*
避免a
自行匹配,则 mlocate 需要\+
而 gnu just +
。
例如,要匹配目录a
及其下的所有内容,您可以对两个版本都使用
locate -r '/a\(/\|$\)'
对于 mlocate,您可以--regex
使用扩展语法作为前缀
locate --regex '/a(/|$)'
--regextype egrep
例如,要对 gnulocate 执行相同的操作,您需要添加 option 。