如何在FreeBSD中查找文件


14

我试图example.filename在我的FreeBSD服务器上找到的所有副本。最好/最简单/最有效的方法是什么?


1
虽然答案很相似,但您可能想弄清楚是使用Linux还是FreeBSD。他们不是同一回事。
Greg Hewgill

编辑标题以使操作系统更具体
Ian 2009年

这可能应该被标记为FreeBSD,但是我没有这样做的声誉。
mikl,2009年

Answers:


18
find / -name example.filename

2
可靠,但速度慢。有时慢。
dmckee ---前主持人小猫,

3
根据需要,其他可能合适的“查找”标志:-type f(不会打扰具有相同名称的目录或符号链接)-ls(显示详细信息,例如文件大小,例如文件是否相同)名称,但内容不同)
扎克·汤普森

19
locate filename

速度远远超过find如果你正在运行的定位服务,且只发现在当时存在的文件updatedb上次运行(usualy夜befor cron作业的控制之下)。

可以updatedb手,但甚至比慢find克莱图斯建议,并要求根。有时我会在安装一堆新东西后手动更新数据库。


3
只有当您正在运行用于构建定位数据库的服务时,定位才有效(忘记它的名称)。它还可能会受到时间延迟的影响(因为您要查找的文件可能是从上次构建以来添加的)。
cletus

编辑和评论在网上划线。凉。您当然是正确的。
dmckee ---前主持人小猫

4
如果您发现自己find /每周执行一次或在任何一棵大树上执行不止一次,那么运行该locate服务可能是值得的,因为locate(1)这样做的速度要快得多。
德鲁·史蒂芬斯

@cletus Running sudo periodic weekly更新locate数据库。在可能包含所需文件的任何安装或下载后运行该文件。
罗勒·布尔克

2

如果您已安装定位(又名slocate),则

locate example.filename

每晚运行一次cron作业,以重新索引计算机上的所有文件。由于这个原因,它并不总是最新的。


2

有时您想在特定目录级别查找文件。在这种情况下,使用外壳通配符会很方便:

ls /data/*/example.filename

显然,这仅在您具有严格的目录结构时才有效。


1

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路由可以避免此问题。



0

我有时候会


  find . | grep example.filename

但是可能效率非常低下。


是的,匹配所有内容然后丢弃所有内容,除了您要查找的那个名称。相反,您可以简单地执行“ find -name“ example.filename”“,而无需先打印所有内容且无需运行额外的grep进程即可执行完全相同的操作。
MihaiLimbăşan,2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.