我编写了一个bash shell脚本,其中一部分是使用find命令检查文件是否超过30天,遗憾的是当我将其上传到我的主机时,由于find命令被锁定,它无法正常工作。
有没有人知道如何检查文件是否超过30天而没有find命令?
我想我需要做一个“ls -a $ filename”,然后解析日期字符串,将其转换为unix日期,然后将其与今天的日期进行比较,但我在unix上非常生疏。
由于
答案 0 :(得分:6)
stat -c %Z filename
给出了unixtime中的最后一次更改时间
stat -c %Y filename
如果您想要上次修改时间。
答案 1 :(得分:3)
您可以使用if [ $file -ot $timestamp_file ]
(-ot
表示“早于”)。您必须构造适当的文件,例如使用touch
(需要时间戳选项)。如果这是一个周期性任务,您还可以在每次运行时创建时间戳文件以供下次使用。
答案 2 :(得分:0)
让ls
输出一个unix时间戳,如下所示:
ls -l --time-style='+%s'
然后从输出中获取时间戳,并且simlpy计算当前时间与ls
的时间戳之间是否有30×24×60×60秒。
您可以使用
获取当前时间戳date '+%s';
答案 3 :(得分:0)
这在Linux中不起作用:日期中没有-v选项
t=`date +%Y%m%d%H%M`
let u=$t-1000000
touch -t "$u" $DATEFILE
if [ $SERVERFILE -ot $DATEFILE ]; then
rm $SERVERFILE
fi
答案 4 :(得分:-1)
好的,这就是我最终做到的......
touch -t "$(date -v -1m +%Y%m%d%H%M)" ${DATEFILE}
if [ ${SERVERFILE} -ot ${DATEFILE} ]
谢谢大家。