Bash脚本实现保留最新X个文件夹并删除其余旧文件夹
实现方案
假设你使用Bash脚本,可按以下步骤实现保留最新X个文件夹、将其余存入待删除变量的需求:
核心思路
- 提取文件夹名中的epoch时间字段,按数字逆序排序(最新的文件夹排在最前)
- 跳过前X个需要保留的文件夹,剩余的即为待删除目标
代码实现
# 假设你的文件夹列表已存入该变量 folders="123-1.2.3.4-12345679 123-1.2.3.4-12345680 123-1.2.3.4-12345681 123-1.2.3.4-12345682" # 设置需要保留的最新文件夹数量 keep_count=2 # 生成待删除文件夹列表 to_delete=$(echo "$folders" | sort -t '-' -k 3nr | tail -n +$((keep_count + 1))) # 可选:验证结果 echo "待删除文件夹:" echo "$to_delete"
代码解释
sort -t '-' -k 3nr:以-为分隔符,按第3个字段(epoch时间)进行数字逆序排序,确保最新的文件夹排在最前面tail -n +$((keep_count + 1)):从第keep_count+1行开始读取内容,自动跳过前keep_count个需要保留的文件夹,剩下的就是待删除的目标- 如果文件夹总数≤保留数量,
to_delete会是空值,后续删除操作不会执行无效操作
内容的提问来源于stack exchange,提问作者Mar
相关产品推荐
相关产品推荐

