首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较shell中两个文件的日期

比较shell中两个文件的日期
EN

Stack Overflow用户
提问于 2013-04-24 14:28:14
回答 2查看 2.5K关注 0票数 2

我在不同的时间创建了两个文件。

在我的shell脚本程序中,我想用之前创建的文件的日期初始化一个变量。

例如。如果file1是在4月22日创建的,file2是在4月19日创建的,那么我的变量应该初始化为4月19日。

我如何在bash shell中做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2013-04-24 15:40:06

假设存在GNU stat ( GNU coreutils的一部分):

代码语言:javascript
运行
复制
if [[ $(stat -c%W <file1>) -lt $(stat -c%W <file2>) ]]
then
    EARLIER="$(stat -c%w <file1>)"
else
    EARLIER="$(stat -c%w <file1>)"
fi

注意,%W (整数)与%w (人类可读)的情况很重要。

%W / %w是出生时间,因为你要求的是“创建时间”。通常,%Y / %y (上次修改)或%Z / %z (上次修改)更有意义。

如果您需要不同的日期格式,您可以将stat输出馈送到date,例如:

代码语言:javascript
运行
复制
date -d "$(stat -c%w <earlier_file>)" +"%Y-%m-%d")

PS:当您讨论时间戳时,请考虑使用RFC 3339进行格式化,即YYYY-MM-DD HH:MM:DD-TZ,它是明确的、可移植的和可排序的。

票数 1
EN

Stack Overflow用户

发布于 2013-04-24 14:55:06

/bin/date可以使用%s格式进行convert to timestamps,之后的日期比较是直接的数字比较,所以您的问题的解决方案,模语法错误,是:

代码语言:javascript
运行
复制
DATE1=`date -j '22 April' +"%d %B"`
DATE2=`date -j '19 April' +"%d %B"`
if [[ $DATE2 < $DATE1 ]]; then
    export VAR=`date -j $DATE1 +"%s"`
else
    export VAR=`date -j $DATE2 +"%s"`
fi
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16184859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档