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

如何使用单条Bash命令递归查找最新文件早于3天的目录

解决递归查找“最新文件早于3天”的子目录问题

没问题,我刚好有几个实用的方案能满足你的需求!你要的是递归找出所有子目录,且这些目录里没有任何近3天修改过的文件(也就是目录下的最新文件修改时间早于3天),对吧?之前的find -newermt命令确实不符合需求,因为它只会找出包含新文件的目录,而不是反向筛选。

方案一:高效判断(推荐)

这个方法的思路是:对每个目录,检查是否存在任何近3天修改的文件——如果不存在,就输出该目录。用-print -quit可以在找到第一个符合条件的文件时立即停止,避免不必要的遍历,效率更高:

find . -type d -exec bash -c '
  # 检查当前目录下是否有3天内修改的文件,找到一个就停止
  if ! find "$1" -type f -newermt "3 days ago" -print -quit; then
    echo "$1"
  fi
' _ {} \;

方案二:明确获取最新文件时间

如果你需要明确基于目录内最新文件的时间来判断,可以用这个方法:先提取目录内最新文件的时间戳,再和3天前的时间戳对比:

find . -type d -exec bash -c '
  # 获取当前目录下所有文件的最新修改时间戳(秒级)
  latest=$(find "$1" -type f -printf "%T@\n" | sort -n | tail -1)
  # 计算3天前的时间戳
  cutoff=$(date -d "3 days ago" +%s)
  
  # 如果目录没有文件,或者最新文件时间早于3天前,就输出目录
  if [ -z "$latest" ] || (( latest < cutoff )); then
    echo "$1"
  fi
' _ {} \;

可选调整

  • 如果只想检查目录直接包含的文件(不递归子目录里的文件),给内部的find命令加上-maxdepth 1参数即可。
  • 如果不需要输出空目录,删除方案二中的[ -z "$latest" ] ||部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:42:35