![`locate` 命令 (Linux) 不显示主目录中的任何文件](https://linux22.com/image/1575150/%60locate%60%20%E5%91%BD%E4%BB%A4%20(Linux)%20%E4%B8%8D%E6%98%BE%E7%A4%BA%E4%B8%BB%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E4%BB%BB%E4%BD%95%E6%96%87%E4%BB%B6.png)
系统:Debian Sid
问题:该locate
命令仅返回我(用户)主目录之外的文件。此行为是新出现的,可能是通过某些软件包升级引入的。
该命令行为正常并返回系统上任何位置的文件和目录的名称,但现在不知何故受到描述的限制。
我猜这与数据库有关,也可能与有关updatedb
,但我不熟悉设置。我可以检查和更改什么才能恢复正常行为locate
?
答案1
该locate
命令使用 连夜准备的数据库updatedb
。您的问题是,出于隐私考虑,默认情况下updatedb
不会扫描未每个用户都可读。
如果您只想为自己创建数据库,可以使用:
updatedb -l 0 --output=/home/username/.mydb.db
并使用以下命令在其中进行搜索:
locate -d ~/.mydb.db search-pattern
您可以使用别名使其更方便:
alias lupdatedb="updatedb -l 0 --output=/home/username/.mydb.db"
alias llocate="locate -d ~/.mydb.db"
但是,由于locate
如果不先运行就不会找到新文件updatedb
,我认为该find
命令会更有用,因为它会扫描真实文件而不是过时的数据库。