linux shell 如何比较2个文件最后修改时间的大小

linuxshell如何比较2个文件最后修改时间的大小我用ls-lt文件名称>tmp.txt,tmp.txt里有2个文件,如下-rw-r--r--1bankdba2964... linux shell 如何比较2个文件最后修改时间的大小
我用 ls -lt 文件名称 > tmp.txt,tmp.txt里有2个文件,如下
-rw-r--r-- 1 bank dba 29644 Aug 2 00:36 BANKDZ0030120120801.txt
-rw-r--r-- 1 bank dba 158046 Aug 2 07:16 BANKDZ0070120120801.txt
现在想比较这2个文件最后修改时间的大小,就是获取第一个文件的时间00:36 和第二个文件的时间07:16,
并比较他们的大小,若第一个文件的最后修改时间大于第二个的,则执行命令order1,我试了好几次,都
无法截取那个时间,请教一下大家
展开
 我来答
longbowk
2012-08-08 · TA获得超过106个赞
知道答主
回答量:37
采纳率:0%
帮助的人:23.8万
展开全部
仅攻参考
#!/bin/bash -
# 获取文件列表,并删除第一行的total ***
filelist=`ls -lt --full-time $* | sed '1d'`
time=()
file=()
#修改shell的字段分割符
IFS=$'\n'
for f in ${filelist}
do
#取出每行的文件名字段,放入数组file中
filename=`echo $f | awk '{printf("%s", $9);}'`
file+=($filename)
#取出每行的时间字段,转换成EPOCH秒数值(方便比较),放入数组time中
date_modified=`echo $f | awk '{printf("%s %s", $6, $7);}'`
timestr=`date --date="$date_modified" +%s`
time+=($timestr)
done

#取出数组中元素个数,即文件数
#数组file和数组time中每个元素一一对应,即一个文件对应其修改时间值
cnt=${#file[*]}
for((i=0;i<$cnt-1;i++))
do
#如果前者的修改时间大于后者,则输出提示
if [ ${time[$i]} -gt ${time[$i+1]} ];then
echo "Modification time: ${file[$i]} > ${file[$i+1]}"
fi
done
sunyqg
推荐于2017-11-25 · TA获得超过1084个赞
知道小有建树答主
回答量:477
采纳率:75%
帮助的人:630万
展开全部
#!/bin/.sh
newer=`find $1 -newer $2`
if [ "$newer" == "$1" ]
then
echo "$1 is newer than $2"
else
echo "$1 is older than $2"
fi

保存为cmp.sh,加执行权限,比较文件f1和f2:
./cmp.sh f1 f2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式