有时在使用 locate 时,我的搜索字符串会(无意或有意)匹配目录的一部分。这会导致打印目录中该点以下的所有内容。例如:
$ locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/
/lib/modules/
/lib/firmware/
.... etc
这很快就会失控并使搜索变得困难。
有没有办法防止这种情况?例如,让它打印:
$locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/
仅此而已?
此外,是否可以查找目录并仅查找目录?
例如(寻找 qemu 基础文件夹)
实际的:
$locate qemu
home/myname/qemu
home/myname/qemu/.svn
home/myname/qemu/.svn/.....
home/myname/qemu/Makefile
.....
usr/bin/qemu
.....
期望:
$locate (option) qemu
/home/myname/qemu
/usr/bin/qemu
在
mlocate
版本为 的系统上,您可以使用或选项locate
限制匹配:-b
--basename
...这会将结果限制为名称包含该字符串的文件。在我的系统上,这会导致更少的匹配:
locate
打印绝对路径名列表。您始终可以通过管道传递结果grep
以仅获取文件名或者只是目录名
如果你经常这样做,你可以编写一个小脚本来完成每一个(当然,参数化“lib”)。
我们可以使用
-l
如下选项来限制条目数。-w
匹配确切的词-l
找到指定次数出现后成功退出或者你可以使用
-b
选项-b
仅将基本名称与指定模式匹配