Linux 命令行入门教程
33. find(二)时间、大小、权限与 -exec
本教程共 90 篇 · 第 33 篇
33. find(二)时间、大小、权限与 -exec
上章讲了按名字和类型找。这章讲按时间、大小和权限筛,再用 -exec 对找到的结果批量干活。
按修改时间用 -mtime,单位是天。-7 表示 7 天内,+7 表示超过 7 天,7 表示正好第 7 天那一轮:
find ~ -type f -mtime -7
按大小用 -size。+ 大于,- 小于;M 兆字节,k 千字节,G 吉字节:
find / -type f -size +100M
按权限位找用 -perm(权限位含义见 §40):
find . -type f -perm 644
找空文件或空目录用 -empty:
find ~ -empty
-exec 对每一个找到的结果执行一条命令。{} 代表当前文件名,\; 表示命令结束:
find . -name "*.tmp" -exec rm {} \;
Warning上面这条会立刻真删文件,而且删了找不回。动手前,先跑一遍不带
-exec的同样 find,确认命中的是哪些文件。想逐条确认,把rm换成rm -i;或者先用
也可以批量改名:
find . -name "*.txt" -exec mv {} {}.bak \;
把 \; 换成 +,可以让 find 把多个文件一次传给命令,更快:
find . -name "*.log" -exec grep "ERROR" {} +
Tip要删大量文件,也可以配合
xargs(见 §34):find . -name "*.tmp" -print0 | xargs -0 rm,更稳妥。
小结:-mtime / -size / -perm 负责筛选,-exec 接命令做批量处理。凡是涉及删除,先确认列表再执行。