×

linux删除当前目录创建时间超过3小时的文件的命令

Falcon 2026-05-03 views:
自动摘要

正在生成中……

在 Linux 系统中,标准的文件系统(如 ext4, xfs)通常不直接记录“创建时间”(Birth time),而是记录访问时间(atime)、修改时间(mtime)和状态改变时间(ctime)。

不过,现代内核和文件系统已经开始支持 btime(Birth time)。以下是针对不同需求的操作方案:

1. 使用修改时间(最常用)

在大多数场景下,文件的修改时间(mtime)能满足你的需求。

find . -maxdepth 1 -type f -mmin +180 -delete

2. 使用创建时间(适用于支持 btime 的系统)

如果你确定需要根据创建时间(例如 Ubuntu 24.04 或 Debian 12 默认文件系统通常支持),可以使用 find-newerXY 参数。

# 找到当前目录下,创建时间早于 3 小时前的普通文件并删除
find . -maxdepth 1 -type f -not -newermt "3 hours ago" -delete

命令参数详解

  • .:代表当前目录。
  • -maxdepth 1非常重要。这确保只处理当前层级的文件,不会误删子目录里的内容。
  • -type f:只针对文件,不处理文件夹。
  • -mmin +180:修改时间在 180 分钟(3 小时)之前。
  • -newermt:这是一个强大的谓词,m 代表修改时间,t 代表后续是一个时间字符串。配合 -not 使用可以锁定创建/修改早于某个时间点的文件。
  • -delete:直接删除。建议在正式执行前,先将 -delete 替换为 -ls 确认文件列表是否正确。

进阶:安全确认模式

如果你想先看看哪些文件会被删,可以运行:

find . -maxdepth 1 -type f -not -newermt "3 hours ago" -ls

如果需要写进 crontab 脚本

建议使用绝对路径并配合 vi 编辑你的清理脚本:

#!/bin/bash
# 清理指定目录 3 小时前的文件
TARGET_DIR="/path/to/your/folder"
find "$TARGET_DIR" -maxdepth 1 -type f -mmin +180 -exec rm -f {} \;
本文收录于