Bash 在没有find命令的情况下检查文件是否超过30天
我编写了一个bashshell脚本,其中一部分是使用find命令检查文件是否超过30天,遗憾的是,当我将其上载到主机时,find命令被锁定,因此无法工作 有人知道如何在没有find命令的情况下检查文件是否超过30天吗 我想我需要做一个“ls-a$filename”,然后解析日期字符串,将其转换为unix日期,然后将其与今天的日期进行比较,但我对unix非常生疏Bash 在没有find命令的情况下检查文件是否超过30天,bash,shell,unix,Bash,Shell,Unix,我编写了一个bashshell脚本,其中一部分是使用find命令检查文件是否超过30天,遗憾的是,当我将其上载到主机时,find命令被锁定,因此无法工作 有人知道如何在没有find命令的情况下检查文件是否超过30天吗 我想我需要做一个“ls-a$filename”,然后解析日期字符串,将其转换为unix日期,然后将其与今天的日期进行比较,但我对unix非常生疏 谢谢stat-c%Z filename给出了unixtime中的最后更改时间 stat-c%Y filename如果需要上次修改时间。让
谢谢
stat-c%Z filename
给出了unixtime中的最后更改时间
stat-c%Y filename
如果需要上次修改时间。让ls
输出一个unix时间戳,如下所示:
ls -l --time-style='+%s'
然后从输出中获取时间戳,simlpy计算当前时间与ls
中的时间戳之间是否有30×24×60×60秒
您可以使用
date '+%s';
如果[$file-ot$timestamp\u file](
-ot
意思是“早于”)。您必须构造适当的文件,例如使用touch
(使用时间戳选项)。如果这是一项定期任务,您还可以在每次运行时创建时间戳文件,以便下次使用。好的,我最后就是这样做的
touch-t“$(日期-v-1m+%Y%m%d%H%m)”${DATEFILE}
if[${SERVERFILE}-ot${DATEFILE}]
谢谢大家。这在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
嗨,谢谢,我不知道那个命令。因为我的机器上没有-c选项,所以格式应该是-f吗?好的,您如何将其与今天的日期进行比较以检查是否>30天?类似于
$ts1=$(stat-c%Y filename);现在=$(日期'+%s');ts2=$($now-3600*24*30);如果[$ts1-lt$ts2]…
-但无论如何@Ben Jackson的答案更好。ts1=$(stat-c%Y“$path”);现在=$(日期'+%s');ts2=$($now-3600*24*30));如果[$ts1-lt$ts2];然后呼应“年长者”;fi
FTFYOK谢谢,你知道我如何在30天前得到日期,这样我就可以把它传给touch命令吗?@青蛙爸爸:touch-d“$(date-d'30天前”)“30DAYSAGO
Hi谢谢,但是我不能让这个命令工作,我得到了“ls:invalical option--”Sjoerd的解决方案意味着GNU ls--这显然是海报上没有的。“That”指的是另一个答案。回复的顺序可能会改变,所以这应该作为评论提交——尽管你可能还不能评论。