我在Linux上使用locate命令。 我目前使用它search整个文件系统。 我只希望它在一个特定的目录内search。 我该怎么做?
另一种方法是在locate使用模式匹配:
locate '/some/directory/*filename*'
比较以下命令的输出:
$ locate tmpfile /usr/lib64/perl5/auto/POSIX/tmpfile.al /usr/share/man/fr/man3/tmpfile.3.gz /usr/share/man/ja/man3/tmpfile.3.gz /usr/share/man/man3/tmpfile.3.gz /usr/share/man/man3p/tmpfile.3p.gz $ $ locate '/usr/lib64/*tmpfile*' /usr/lib64/perl5/auto/POSIX/tmpfile.al $
locate /usr/lib*tmpfile*给出相同的结果。
使用以下命令为您的特定目录创buildslocate数据库:
updatedb -U /path/to/directory
并用以下search:
locate <search_string>
UPDATE
这在我的Gentoo系统上工作正常,但CentOS不包括-U选项。 所以,你可以尝试下面的代码:
build立数据库:
# updatedb -U /path/to/dir -o dir_locate.db
并search:
# locate -d dir_locate.db <search_string>
我能想到的最简单的答案是
locate search_term | grep "/specified/directory"
更好的解决scheme可能是使用“查找”及其path选项…
最简单的方法如下例所示:
updatedb -o ~/tmp.db -l0 -U $PWD locate -d ~/tmp.db "foo"
将$PWD更改为您的特定目录。
上面的例子将只为特定的目录创build本地数据库。