You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unix中删除30天以上的文件和文件夹,且保留含未超30天文件的文件夹

在Unix系统中删除指定条件的文件与文件夹

核心需求拆解

要实现的目标是:

  • 删除所有修改时间超过30天的文件
  • 删除那些自身修改时间超过30天,且内部没有任何修改时间未超过30天的文件/子目录的文件夹

分步执行命令

1. 先删除符合条件的文件

用find命令定位并删除所有修改时间超过30天的文件:

find /path/to/your/target -type f -mtime +30 -delete

2. 删除符合条件的过期文件夹

接下来清理那些自身过期且内部没有近期文件/目录的文件夹,通过嵌套find检查目录内容:

find /path/to/your/target -type d -mtime +30 -exec sh -c '
  for dir do
    # 检查目录下是否存在最近30天修改过的文件或子目录
    if ! find "$dir" -mindepth 1 -mtime -30 | grep -q .; then
      rm -rf "$dir"
    fi
  done
' sh {} +

关键参数解释

  • /path/to/your/target:替换为你实际要操作的根目录,比如/var/log/archives
  • -mtime +30:匹配修改时间超过30天的文件/目录(以24小时为一天计算);若需精确到分钟,可用-mmin +$((30*24*60))
  • -delete:直接删除找到的文件,建议先替换为-print预览要删除的内容,确认无误后再执行删除
  • -mindepth 1:检查目录内容时排除目录本身,只遍历其下的文件和子目录
  • grep -q .:静默检查是否有符合条件的内容,只要存在就停止遍历,提升效率

安全操作建议

  • 预览优先:执行删除前,将-delete换成-print,将rm -rf "$dir"换成echo "待删除目录: $dir",确认操作范围符合预期
  • 权限检查:确保你拥有目标目录及文件的删除权限,避免因权限不足导致操作失败
  • 规避系统目录:绝对不要在/(系统根目录)下执行此类命令,防止误删系统核心文件

内容的提问来源于stack exchange,提问作者Raja Babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:05:40