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

Ubuntu/Linux下如何获取指定时间后创建的最新文件名

Linux下获取目录最新创建文件并验证创建时间

一、获取目录中最新创建的文件名

Linux下要获取严格意义上的创建时间(birth time),需注意仅部分文件系统(如ext4)支持该属性,旧文件系统可能无法读取。以下两种常用方法:

方法1:使用ls命令

ls -1 --time=birth --sort=time /目标目录路径 | head -n 1
  • --time=birth:指定按文件创建时间排序
  • --sort=time:按时间倒序排列(最新文件在前)
  • head -n 1:提取排序后的第一个文件(即最新创建的文件)

方法2:使用find命令(更适合脚本场景)

find /目标目录路径 -maxdepth 1 -type f -printf "%W@ %p\n" | sort -n -r | head -n 1 | awk '{print $2}'
  • -maxdepth 1:仅遍历当前目录(去掉则递归子目录)
  • -type f:仅匹配文件(排除目录)
  • %W@:输出文件创建时间的Unix时间戳
  • sort -n -r:按时间戳数值倒序排序
  • awk '{print $2}':提取文件名部分

二、验证文件是否在指定时间后创建

步骤1:将指定时间转换为Unix时间戳

假设指定时间为2024-05-01 00:00:00,执行:

specified_time=$(date -d "2024-05-01 00:00:00" +%s)

步骤2:获取目标文件的创建时间戳

用第一步得到的最新文件名替换/最新文件路径:

file_crtime=$(stat -c %W /最新文件路径)

步骤3:对比时间并输出结果

if [ $file_crtime -gt $specified_time ]; then
    echo "该文件是在指定时间之后创建的"
else
    echo "该文件是在指定时间之前或等于指定时间创建的"
fi

整合为一键脚本

如果需要重复执行,可将逻辑写成脚本:

#!/bin/bash

# 配置参数
TARGET_DIR="/你的目标目录路径"
SPECIFIED_DATE="2024-05-01 00:00:00"

# 转换指定时间为时间戳
specified_time=$(date -d "$SPECIFIED_DATE" +%s)

# 获取最新创建的文件
latest_file=$(find "$TARGET_DIR" -maxdepth 1 -type f -printf "%W@ %p\n" | sort -n -r | head -n 1 | awk '{print $2}')

if [ -z "$latest_file" ]; then
    echo "目标目录下无文件"
    exit 1
fi

# 获取文件创建时间戳
file_crtime=$(stat -c %W "$latest_file")

# 输出结果
echo "最新创建的文件:$latest_file"
if [ "$file_crtime" -gt "$specified_time" ]; then
    echo "创建时间晚于指定时间:$SPECIFIED_DATE"
else
    echo "创建时间早于或等于指定时间:$SPECIFIED_DATE"
fi

保存为check_latest_file.sh,赋予执行权限后运行:

chmod +x check_latest_file.sh
./check_latest_file.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:15:17