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

2024-12-04 00:12:20
推荐回答(2个)
回答1:

仅攻参考
#!/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

回答2:

#!/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