我正在尝试将文件的上次修改日期与今天的日期进行比较。如果修改日期在今天的日期之前,那么我的脚本将做一件事,如果日期与今天的日期匹配,我需要它做另一件事。现在我的代码如下所示:
date2= ls -l file | awk '{print $6 $7}'
date1= date +%b%d
if (( $(printf "%(%s)T" "$date1") > $(printf "%(%s)T" "$date2") ))
then
echo "date1 is after date2"
else
echo "date1 is not after date2"
fi
该代码不起作用。有没有人有什么建议?
答案1
如果您find
安装了 GNU,则以下行将返回文件名(如果上次修改时间早于今天)
find yourfile -prune -daystart -mtime +0 -print
答案2
您可以直接bash/zsh/ksh
与测试运算符比较文件时间戳-nt
(更新于)。您还可以用来touch
设置文件的时间,例如0:00
今天的午夜。简单地说:
touch -d '0:00' /tmp/midnight
if [ file -nt /tmp/midnight ] ...
答案3
如果在 GNU 系统上,您可以使用以下命令:
#!/bin/bash
last_mod="$(date -r "$1" '+%Y%m%d')"
current="$(date '+%Y%m%d')"
if [ "$last_mod" -eq "$current" ]; then
## Do something
elif [ "$last_mod" -gt "$current" ]; then
## Do something
else
## Do something
fi
将文件名作为第一个参数插入到脚本中。
last_mod
将包含文件的最后修改日期current
将包含今天的日期
答案4
if [[ $(date -d$(date +%D) +%s) -gt $(date +%s -r file.txt) ]]; then
echo "Not Today"
else echo "Today"
fi
这将比较自今天 00:00 纪元以来经过的时间和自 file.txt 纪元以来的修改日期。