Linux 文件查找:find 与 locate 一次讲清
文件找不到了怎么办
Linux 里找文件主要有两个工具:find 和 locate。一个现找、一个查索引,速度和准确性正好互补。
find:现找,慢但准
find 直接遍历目录树,所以结果永远是最新的,代价是慢,尤其在根目录下全盘搜。基本用法是 find 路径 条件:find /home -name "*.log" 找 home 下所有 log 文件;find /var -type f -size +100M 找 var 下大于 100M 的文件;find . -mtime -7 找 7 天内改过的。
find 的条件可以组合:-name 按名字(支持通配符),-type f 只找文件、-type d 只找目录,-size 按大小,-mtime 按修改时间,-user 按属主。多个条件默认是“且”,加 -o 是“或”。找到后想直接处理,加 -exec:find /tmp -name "*.tmp" -exec rm {} \; 会逐个删除,操作前最好先不带 -exec 看一遍结果。
locate:查索引,快但可能旧
locate 不遍历磁盘,查的是系统定期建立的文件名数据库,所以毫秒级出结果。用法简单:locate nginx.conf。缺点是数据库靠 updatedb 定期更新,刚新建的文件可能查不到,刚删的文件还可能出现。刚装完软件 locate 不到,先跑一次 sudo updatedb 手动更新数据库。
怎么选
只知道文件名、大致记得在哪,直接 locate,秒出结果;locate 找不到或要按大小、时间、类型精细筛选,用 find;要在结果上批量操作,用 find 的 -exec。日常还有个顺手组合:先 locate 缩小范围,再 find 精确查。两个都熟了,找文件基本不用再翻目录。
常用命令
按名找:find /etc -name "*.conf";按大小找大文件:find / -type f -size +500M 2>/dev/null(2>/dev/null 是把无权限的报错藏起来);按时间找:find . -mtime -1;快速定位:locate sshd_config;更新索引:sudo updatedb。
- 点赞
- 收藏
- 关注作者
评论(0)