我试图example.filename
在我的FreeBSD服务器上找到的所有副本。最好/最简单/最有效的方法是什么?
我试图example.filename
在我的FreeBSD服务器上找到的所有副本。最好/最简单/最有效的方法是什么?
Answers:
find / -name example.filename
locate filename
速度远远超过find
,如果你正在运行的定位服务,且只发现在当时存在的文件updatedb
上次运行(usualy夜befor cron作业的控制之下)。
你可以跑updatedb
手,但甚至比慢的find
克莱图斯建议,并要求根。有时我会在安装一堆新东西后手动更新数据库。
find /
每周执行一次或在任何一棵大树上执行不止一次,那么运行该locate
服务可能是值得的,因为locate(1)
这样做的速度要快得多。
sudo periodic weekly
更新locate
数据库。在可能包含所需文件的任何安装或下载后运行该文件。
locate
正如其他人提到的那样,这locate
是查找文件的快速方法。此命令使用文件和文件夹名称的预编译索引。将搜索该名称数据库,而不是在文件系统中进行爬网。
locate example.filename
要不区分大小写,请添加-i
。
locate -i eXAmPle.FileName
locate
数据库使用的数据库locate
必须是最新的。在执行可能包含所需文件的安装或下载后,必须更新locate
数据库。
该locate
数据库最终将由您的FreeBSD系统自动更新。每周有一组杂务包括此任务。这些杂项在/etc/periodic/weekly/310.locate
脚本中列出。
强制尽早更新locate
数据库的最简单安全的方法是强制现在每周进行一次杂务。
sudo periodic weekly
或者,您甚至可以强制执行所有常规杂务。设置新的FreeBSD系统后,您可能想立即执行此操作。
sudo periodic daily weekly monthly
如果使用其他途径来更新locate
数据库,您可能会收到一条有关不安全的消息,向FreeBSD系统上的任何用户透露系统所有文件的名称。使用periodic
路由可以避免此问题。
如果您具有最新的定位数据库,则只需:
locate example.filename
我有时候会
find . | grep example.filename
但是可能效率非常低下。