我在不同的时间创建了两个文件。
在我的shell脚本程序中,我想用之前创建的文件的日期初始化一个变量。
例如。如果file1是在4月22日创建的,file2是在4月19日创建的,那么我的变量应该初始化为4月19日。
我如何在bash shell中做到这一点?
发布于 2013-04-24 15:40:06
假设存在GNU stat
( GNU coreutils的一部分):
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
,例如:
date -d "$(stat -c%w <earlier_file>)" +"%Y-%m-%d")
PS:当您讨论时间戳时,请考虑使用RFC 3339进行格式化,即YYYY-MM-DD HH:MM:DD-TZ,它是明确的、可移植的和可排序的。
发布于 2013-04-24 14:55:06
/bin/date
可以使用%s
格式进行convert to timestamps,之后的日期比较是直接的数字比较,所以您的问题的解决方案,模语法错误,是:
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
https://stackoverflow.com/questions/16184859
复制相似问题