这会在“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',它将仅报告具有该字符串的文件或目录。
没有选项可用于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。