我在不同时间创建了两个文件。
在我的shell脚本程序中,我想用一个先前创建的文件的日期初始化一个变量。
例如。如果file1是在4月22日创建的,而file2是在4月19日创建的。我的变量应该初始化为4月19日。
如何在bash shell中执行此操作?
答案 0 :(得分:1)
假设存在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,非 - 轻松,便携,可排序。
答案 1 :(得分:-1)
/bin/date
可convert to timestamps使用%s
格式,之后日期比较是直接数字比较,因此您的问题的解决方案是模数语法错误:
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