正确做法(按推荐顺序)
1. 先看一眼要删什么,别直接删
cd trace # 你的 trace 目录
ls -1 *.tr* | wc -l # 数量
ls -lt *.tr* | head -20 # 最近 20 个,确认不是正在被写的活跃 trace
2. 用 find ... -delete(最快、无 fork、无 xargs 引号坑)
# 只删当前目录一层的普通文件,不递归(trace 文件不需要 -r)
cd trace
find . -maxdepth 1 -type f -name "*.tr*" -delete
# 如果确实要递归、且想保留最近 N 天
cd trace
find . -maxdepth 1 -type f -name "*.tr*" -mtime +7 -delete
-delete 是 find 内置动作,由 find 进程自己 unlink(),不经过 execve,所以没有参数列表上限问题,也不会踩文件名带空格 / 换行的坑。
3. 批量委托给 rm(需要保留 rm 语义时)
cd trace
find . -maxdepth 1 -type f -name "*.tr*" -exec rm -f {} +

徐万新之路

