find 命令实用速记:按名称、时间、大小快速定位文件
find 是 Linux 下按条件搜索文件的利器,比一层层翻目录快得多。掌握 -name、-mtime、-size 这三种条件,就能应付日常九成的定位需求。本文记几个最常用的用法,照着敲就能用。
一、按名称:-name 与通配符
按文件名查找是最常见的需求,想找某个日志或配置文件,一条命令就够了。
find /var/log -name "*.log"
find . -name "config*.yaml"
find /home -iname "*.jpg"
-name 区分大小写,-iname 不区分大小写。通配符一定要加引号,否则会被 shell 提前展开,find 收到的就不是你想要的模式。只想找文件加 -type f,只想找目录用 -type d,先限定类型能少很多无关结果。
二、按时间:-mtime、-mmin 与 -newer
清理旧日志、找回最近改过的文件,都要靠时间条件。
find . -mtime -7
find . -mtime +30
find /tmp -mmin -60 -type f
find . -newer ./last_backup.txt
-mtime -7 表示 7 天内修改过,+30 表示 30 天前修改过,数字前不带符号表示正好是那一天;-mmin 以分钟为单位,适合查最近一小时内变动的文件。-newer 以某个文件为基准,找出比它更新的文件,做增量备份前很实用。
三、按大小:-size 与单位
磁盘快满时,先用 find 把大文件揪出来。
find . -size +100M
find /var -size -10k -type f
find . -size +1G -exec ls -lh {} \;
+100M 表示大于 100MB,-10k 表示小于 10KB,不带 + 或 - 表示刚好等于这个大小。单位常用 k(KB)、M、G;找到大文件后接 -exec ls -lh {} ;,可以直接看到大小和完整路径。
四、组合条件与批量处理
多个条件默认是“与”关系,-o 表示“或”,! 表示“非”,括号要转义或加引号:
find . \( -name "*.log" -o -name "*.tmp" \) -mtime +7
find . -name "*.bak" ! -path "./backup/*"
find . -name "*.log" -mtime +30 -exec rm -f {} \;
用 -exec 可以对找到的文件批量处理,比如删除过期日志。执行删除前最好先不加 -exec 看一眼结果,确认无误再动手,避免误删。
五、排除干扰:权限报错与目录跳过
find 遇到无权访问的目录会输出 Permission denied,把报错重定向到 /dev/null 即可;-prune 可以跳过不需要的目录:
find / -name "*.conf" 2>/dev/null
find . -path "./node_modules" -prune -o -name "*.js" -print
记住顺序:先定搜索范围,再加条件,最后看结果。找大文件、旧日志、过期备份时,这套命令几分钟就能定位,不用再逐个目录翻。
- 点赞
- 收藏
- 关注作者
评论(0)