Answers:
没有选择可用于locate
查找所选文件类型(如目录)的选项,但是您可以使用问题中的语法- Dropnot$
查找以结尾的行Dropnot
。为此,您必须使用-e
选项来定位以打开POSIX正则表达式。
在这种情况下,您应该使用:
locate -e Dropnot$
重要的是您拥有的定位版本。在我的系统(Gentoo Linux)中,我有“安全定位”:
$ locate --version
Secure Locate 3.1 - Released March 7, 2006
的答案中没有--basename
选项uther
。该选项由GNU Locate从findutils包提供:
$ ./locate --version
locate (GNU findutils) 4.4.2
如果要将regexp与GNU Locate一起使用,则应改用-r
switch -e
。
我已经mlocate
安装好了。它是RedHat的默认发行版,因此它将在Fedora,RHEL和CentOS上。从man 1 locate
-b, --basename
Match only the base name against the specified patterns. This
is the opposite of --wholename.
因此,如果您运行locate -b '\Dropknot'
,它将仅报告具有该字符串的文件或目录。
Because \ is a globbing character, this disables the implicit replacement
of NAME by *NAME*.
locate -b /Dropnot
工作
使用GNU定位(其他定位实现可能有所不同):
locate '*/Dropnot'
locate Dropnot | grep '/Dropnot$'
当参数中没有通配符时,将locate
查找具有指定搜索词作为子字符串的路径。当参数是包含一个或多个通配符的外壳模式时,locate
将查找完全匹配。如果您不想/Dropnot
在最后输出:
locate -0 '*/Dropnot' | xargs -0 -n1 dirname
locate Dropnot | sed -n 's:/Dropnot$::p'
Slackware slocate
默认使用,它有一个带有选项的正则表达式搜索r
:
locate -r '/Dropnot$'
将搜索名为的目录Dropnot
。
这将搜索例如,对于编号 -only Dropnot
目录(Dropnot1,Dropnot2等):
locate -r '/Dropnot[[:digit:]]\+$'
-e
选择only print entries for currently existing files
?