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

Linux Bash 如何获取各目录下文件最大修改时间并按规则筛选排序

可行实现方案

首先进入你的目标根目录path/mydir后执行以下命令即可:

# 替换grep的正则参数为你需要排除的目录规则,示例为排除name1、name2匹配的目录
find . -maxdepth 1 -type d ! -name . | grep -vE 'name1|name2' | while read db_dir; do
  # 统计当前目录下所有文件的最大修改时间
  max_record=$(find "$db_dir" -type f -exec stat -c "%Y %y" {} \; 2>/dev/null | sort -n | tail -n1)
  [ -z "$max_record" ] && continue
  # 拆分时间戳和可读日期
  read ts date_str <<< "$max_record"
  date_str=${date_str:0:10}
  # 过滤修改时间距今超过30天的记录
  if [ $(( $(date +%s) - $ts )) -gt 2592000 ]; then
    echo "${db_dir#./} $date_str"
  fi
done | sort -k2

命令说明

  • 第一层find指令仅扫描目标路径下的一级子目录,排除当前目录本身,避免统计父目录
  • grep -vE '正则规则'部分实现目录排除逻辑,你可以按需修改后面的正则表达式
  • 内层find遍历单个数据库目录下所有文件,通过stat获取每个文件的秒级时间戳和修改日期,排序后取最大值即为该目录的最新修改时间
  • 时间判断逻辑用当前时间戳减去目录最新修改时间戳,大于2592000秒(30天的总秒数)即符合过滤条件
  • 末尾的sort -k2按日期列升序排序,实现从旧到新的输出要求

效果验证

针对你给出的目录示例,若当前时间距离2021-11-05不足30天,database_1会被过滤,最终输出和你期望的结果完全一致:

database_3 2020-06-01
database_2 2021-08-01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:05