LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1236|回复: 16

急问:怎么比较两个时间?谢谢

[复制链接]
发表于 2004-5-8 12:45:37 | 显示全部楼层 |阅读模式
我要比较两个文件的修改时间,然后才能做其他相应的动作。
请问什么命令可以比较时间?
很急,谢谢了
发表于 2004-5-8 13:34:18 | 显示全部楼层
简单的用ls -t来比较,
 楼主| 发表于 2004-5-8 13:46:58 | 显示全部楼层
对不起,我刚才自己没有说清楚。
其实我是想把一个文件的时间取出来,然后用判断语句两个时间的先后,请问怎么写?
谢谢
发表于 2004-5-8 14:02:06 | 显示全部楼层
/home/lee#t1=$(ls -l a|awk '{print $8}')
/home/lee#echo $t1
13:44
/home/lee#t2=$(ls -l b|awk '{print $8}')
/home/lee#echo $t2
13:45
/home/lee#echo "$t2\n$t1"
13:45
13:44
/home/lee#echo "$t2\n$t1"|sort
13:44
13:45

这样可以看出文件的早晚了,是这样么?
我的离解是这样的
 楼主| 发表于 2004-5-8 14:19:46 | 显示全部楼层
不好意思,我还是没讲清楚。这次说的清楚一点:
我现在自己定了一个时间,这个时间只有年和月,(比如说200304,代表2003年4月份),放在$mytime里。我现在要检测一个文件的最后modify的时间,如果它的时间在我给定的日期前,我要将这个移走。
我就是要那个比较两个时间的表达式,然后我才能做相应的动作。
真是麻烦了,谢谢。
 楼主| 发表于 2004-5-8 14:21:50 | 显示全部楼层
比如说这个文件名叫file,我现在就是
1。取出它的最后修改的时间
2。和我给定的时间$mytime比较,要一个表达式
发表于 2004-5-8 14:43:31 | 显示全部楼层
最初由 lionheart28 发表
比如说这个文件名叫file,我现在就是
1。取出它的最后修改的时间
2。和我给定的时间$mytime比较,要一个表达式

呵呵,这样是否可以?
如:
  1. mytime=200405
  2. for i in /dir/*;do
  3.         time=$(stat $i|awk '/^Modify/{sub(/-/,"");print substr($2,1,6)}')
  4. #
  5. #如果用stat取出文件最后修改时间等于$mytime,那么......这里是echo,你可以加入你要的执行的命令
  6. #        
  7.         [[ $mytime -eq $time ]]&& echo $i  
  8. done
复制代码
 楼主| 发表于 2004-5-8 14:59:13 | 显示全部楼层
我是初学者,有些看不懂,能帮忙解释一下吗?
for i in /dir/*,这是不是把/dir下的所有文件一个一个赋给变量i?那么dir下的子文件夹里的文件会赋给i吗?
time=$(stat $i|awk '/^Modify/{sub(/-/,"");print substr($2,1,6)}'),这句话彻底没看懂,能解释一下吗?
谢谢了
发表于 2004-5-8 15:05:24 | 显示全部楼层
最初由 lionheart28 发表
我是初学者,有些看不懂,能帮忙解释一下吗?
for i in /dir/*,这是不是把/dir下的所有文件一个一个赋给变量i?那么dir下的子文件夹里的文件会赋给i吗?
time=$(stat $i|awk '/^Modify/{sub(/-/,"");print substr($2,1,6)}'),这句话彻底没看懂,能解释一下吗?
谢谢了

1,for结构把/dir目录下的所由文件一个一个的赋值给变量$i
2,用stat filename(就是变量$i)的输出用awk来处理,先找到以Modify开头的行在将行里
日期中的-号去掉,然后提取前6个字符,即:200405
3,关于for和awk的用法见置顶里的shell入门教程,stat的用法很简单,man一下就可
 楼主| 发表于 2004-5-8 15:51:49 | 显示全部楼层
我按你的方法,但是显示stat: command not found
这该怎么办呢?
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表