locate 命令听起来很直观。我希望它能够在文件系统上定位文件。但是,它很少在系统上找到确实存在的文件:
$ locate ipsec.secrets
Run Code Online (Sandbox Code Playgroud)
即使从文件系统根目录 / 运行,这也不会产生任何结果。该文件确实存在:
$ whereis ipsec.secrets
ipsec: /usr/sbin/ipsec /etc/ipsec.secrets /etc/ipsec.d /etc/ipsec.conf /usr/lib/ipsec /usr/share/man/man8/ipsec.8.gz
Run Code Online (Sandbox Code Playgroud)
为什么 locate 找不到这个文件?
如果您无法访问明显存在locate
的文件,
我只会看到两种可能性:
文件(目录)是在上次更新 locate 数据库之后创建的。默认情况下,它每天更新一次 ( /etc/cron.daily/mlocate
)。
拥有足够的特权,您可以修复它以强制更新
sudo updatedb
Run Code Online (Sandbox Code Playgroud)该文件(目录)是在没有被 updatedb 扫描的路径下创建的(这种情况更罕见):您可以在配置文件中找到被修剪文件的键/etc/updatedb.conf
。搜索 PRUNENAMES、PRUNEPATHS 或 PRUNEFS 并进行相应修改,然后再次更新数据库。
sudo pico /etc/updatedb.conf
sudo updatedb
Run Code Online (Sandbox Code Playgroud)当然,即使没有特权,您仍然可以搜索文件,例如从一个位置开始扫描所有目录和子目录,例如
find . -name '*ipsec.secrets*' # to start from the current directory
find / -name '*ipsec.secrets*' # to start from the root # long long
Run Code Online (Sandbox Code Playgroud)
请注意,它whereis
有一个硬编码的路径(搜索位置),因此可能无法始终找到您要查找的内容。
归档时间: |
|
查看次数: |
20737 次 |
最近记录: |