检查文件是否超过30天没有find命令

时间:2010-11-11 08:23:01

标签: bash shell unix

我编写了一个bash shell脚本,其中一部分是使用find命令检查文件是否超过30天,遗憾的是当我将其上传到我的主机时,由于find命令被锁定,它无法正常工作。

有没有人知道如何检查文件是否超过30天而没有find命令?

我想我需要做一个“ls -a $ filename”,然后解析日期字符串,将其转换为unix日期,然后将其与今天的日期进行比较,但我在unix上非常生疏。

由于

5 个答案:

答案 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)

好的,这就是我最终做到的......

  1. 我触摸了一个日期为1个月的文件。
  2. touch -t "$(date -v -1m +%Y%m%d%H%M)" ${DATEFILE}

    1. 比2个文件测试更旧了。
    2. if [ ${SERVERFILE} -ot ${DATEFILE} ]

      谢谢大家。