1. 整条命令拆解
find "$APP_LOG_PATH" -mindepth 1 -delete
find "$APP_LOG_PATH":在指定备份目录下查找文件/目录-mindepth 1:不匹配目录本身,只匹配目录内部的内容
如果不加-mindepth 1,-delete会直接把$APP_LOG_PATH整个文件夹删掉-delete:find 内置删除参数,直接删除匹配到的所有子文件、子文件夹
2. 和 rm -rf $APP_LOG_PATH/* 的对比
原写法风险
rm -rf $APP_LOG_PATH/*
极端场景:如果 APP_LOG_PATH 变量为空,会变成
rm -rf /*
直接删根目录,毁灭性事故。
find 写法优点
- 变量为空时:
find "" ...直接报错,不会执行删除; - 不会删除父目录本身,只清空内部所有内容;
- 递归删除子目录、带特殊字符/空格的文件更安全;
- POSIX 标准,兼容性更好。
3. 等价简易理解
作用 = 安全清空文件夹内部所有内容,保留文件夹本身
4. 扩展小用法
只删除文件、保留子文件夹:
find "$APP_LOG_PATH" -mindepth 1 -type f -delete
5. 补充注意
-delete 是 find 的高级参数,老版本 busybox find(部分嵌入式系统)可能不支持,如果遇到报错可以降级为:
find "$APP_LOG_PATH" -mindepth 1 -exec rm -rf {} +
效果完全一致。

457

被折叠的 条评论
为什么被折叠?



