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

如何升级find命令:记录机器可读格式mtime与文件名并删除目录

改进后的find命令方案

方案1:一次性完成记录与删除

使用find的-exec参数同时实现信息记录和目录删除,确保记录与删除的目标完全一致:

find "$path" -depth 2 -type d -mtime +"$days" -exec sh -c '
  for dir do
    # 以「时间戳|目录路径」的机器可读格式写入日志
    printf "%s|%s\n" "$(stat -c %Y "$dir")" "$dir" >> /your/log/path/delete_record.txt
    # 强制删除目录及内容
    rm -rf "$dir"
  done
' sh {} +

参数说明:

  • stat -c %Y "$dir":获取目录修改时间的Unix时间戳(秒级,机器易解析);若需ISO标准格式,可替换为stat -c %y "$dir"(输出示例:2024-05-20 14:30:00.000000000 +0800)
  • printf "%s|%s\n":用竖线分隔时间戳与路径,避免空格或特殊字符干扰解析
  • rm -rf "$dir":适配非空目录的强制删除场景
  • {} +:批量传递找到的目录给shell脚本,提升执行效率

方案2:先记录再删除(分离操作)

如果需要先确认记录内容再执行删除,可拆分两步操作:

  1. 生成机器可读的待删目录清单:
find "$path" -depth 2 -type d -mtime +"$days" -printf "%T@|%p\n" > /your/list/path/delete_list.txt
  • %T@:直接通过find输出修改时间的Unix时间戳,比调用stat更高效
  • %p:输出目录的完整绝对路径
  1. 根据清单删除目录:
while IFS='|' read -r mtime dir; do
  rm -rf "$dir"
done < /your/list/path/delete_list.txt

注意事项:

  • 给$path和$days变量添加双引号,避免路径含空格或特殊字符时出现错误
  • 替换日志/清单文件的实际存储路径,确保当前用户有写入权限
  • 测试阶段可先移除rm -rf命令,仅执行记录操作,确认目标目录无误后再添加删除逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:59:53