如何仅对目录使用 locate

Mic*_*ant 13 directory locate

这会在“Dropnot”的各个子目录下找到大量文件

$ locate Dropnot
Run Code Online (Sandbox Code Playgroud)

我可以只找到目录位置locate吗?(“Dropnot”在哪个目录中)

所以如果Dropnot是 in /home/me/,那是唯一返回的条目。

如果是这样,最简单/最短的方法是什么?

最好通过标志或符号,而不是通过管道输出和搜索它等,但我会选择任何东西。

也许某种 Dropnot$ 用于行尾?(但没有用)。

Geo*_*e M 11

我已经mlocate安装了。它是 RedHat 默认分发的,所以它会在 Fedora、RHEL、CentOS 上运行。从man locate

-b, --basename
       Match  only  the  base  name  against the specified patterns. This 
       is the opposite of --wholename.
Run Code Online (Sandbox Code Playgroud)

因此,如果您运行locate -b '/Dropknot',它将仅报告具有该字符串的文件或目录。


pbm*_*pbm 7

没有选项可用于locate查找选定类型的文件(如目录),但您可以使用问题中的语法 -Dropnot$查找以Dropnot. 为此,您必须使用-e选项来定位以打开 POSIX 正则表达式。

在这种情况下,您应该使用:

locate -e Dropnot$
Run Code Online (Sandbox Code Playgroud)

您拥有的 locate 版本很重要。在我的系统 (Gentoo Linux) 中,我有 Secure Locate:

$ locate --version
Secure Locate 3.1 - Released March 7, 2006
Run Code Online (Sandbox Code Playgroud)

其中没有--basename选项 fromuther的答案。此选项由 GNU Locate 从 findutils 包提供:

$ ./locate --version
locate (GNU findutils) 4.4.2
Run Code Online (Sandbox Code Playgroud)

如果你想在 GNU Locate 中使用 regexp,你应该使用-rswitch -e。