免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8244 | 回复: 19
打印 上一主题 下一主题

急急! 如何用shell读取unix下文件的创建时间并比较! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-25 09:41 |只看该作者 |倒序浏览
unix下用ls -l命令可以看到各个文件的创建时间,比如:
Feb 24 16:11 1.sh
Feb 25 11:15 2.sh

请问: 如何用一个shell程序, 遍历某个目录下的每一个文件的创建时间,并且和对应文件内的某个字段(比如200503251125,2005年3月25日11点25分)相比较呢?

小女子初学unix和shell, 急切盼望各位大虾指点!!

论坛徽章:
0
2 [报告]
发表于 2005-04-25 11:05 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

首先看这个:
  1. zhyfly@zhyfly:~/bash$ ls -l
  2. total 112
  3. -rwxrw-rw-  1 zhyfly zhyfly    39 2005-04-18 09:32 1
  4. -rw-r--r--  1 zhyfly zhyfly 10240 2005-04-24 22:33 1.tar
  5. -rw-r--r--  1 root   root     313 2005-04-15 08:13 2
  6. -rw-r--r--  1 zhyfly zhyfly    29 2005-04-25 09:34 aa1.txt
  7. -rw-r--r--  1 zhyfly zhyfly    29 2005-04-25 09:34 aa2.txt
  8. -rw-r--r--  1 zhyfly zhyfly    16 2005-04-25 09:34 aa3.txt
  9. -rw-rw-rw-  1 zhyfly root       7 2005-04-19 15:29 aaa
  10. -rw-r--r--  1 root   root      74 2005-04-25 09:21 aa.txt
  11. -rw-r--r--  1 root   root     179 2005-04-25 09:38 abash
  12. -rw-r--r--  1 root   root     130 2005-04-25 08:49 archive
  13. -rwxr-xr-x  1 root   root      41 2005-04-22 10:41 backup.sh
  14. -rw-r--r--  1 root   root     157 2005-04-01 14:35 check.txt
  15. -rwxr-xr-x  1 root   root     166 2005-04-13 08:35 echo.sh
  16. -rw-r--r--  1 zhyfly zhyfly   264 2005-04-25 10:51 file1
  17. -rw-r--r--  1 root   root     114 2005-04-08 13:49 file1.txt
  18. -rw-r--r--  1 zhyfly zhyfly   231 2005-04-25 10:55 file2
  19. -rw-r--r--  1 root   root     124 2005-04-08 14:12 file.txt
  20. -rw-r--r--  1 root   root     172 2005-04-03 10:49 grade.txt
  21. -rw-r--r--  1 root   root      70 2005-04-25 08:56 match
  22. -rwxr-xr-x  1 root   root      44 2005-04-08 14:44 sub.sed
  23. -rw-r--r--  1 zhyfly root      48 2005-04-25 09:37 sum.txt
  24. -rw-r--r--  1 root   root      61 2005-04-08 13:37 test
  25. -rw-r--r--  1 zhyfly zhyfly   106 2005-04-08 15:11 test.bak
  26. -rw-r--r--  1 root   root     201 2005-04-08 08:55 test.txt
  27. -rw-r--r--  1 root   root     121 2005-04-18 11:20 zhyflycron
  28. -rw-r--r--  1 root   root     170 2005-04-25 09:52 zxr
  29. zhyfly@zhyfly:~/bash$ ls -l|awk 'gsub("-","",$6) gsub(":","",$7) {print $6$7,$8}'

  30. 200504180932 1
  31. 200504242233 1.tar
  32. 200504150813 2
  33. 200504250934 aa1.txt
  34. 200504250934 aa2.txt
  35. 200504250934 aa3.txt
  36. 200504191529 aaa
  37. 200504250921 aa.txt
  38. 200504250938 abash
  39. 200504250849 archive
  40. 200504221041 backup.sh
  41. 200504011435 check.txt
  42. 200504130835 echo.sh
  43. 200504251051 file1
  44. 200504081349 file1.txt
  45. 200504251055 file2
  46. 200504081412 file.txt
  47. 200504031049 grade.txt
  48. 200504250856 match
  49. 200504081444 sub.sed
  50. 200504250937 sum.txt
  51. 200504081337 test
  52. 200504081511 test.bak
  53. 200504080855 test.txt
  54. 200504181120 zhyflycron
  55. 200504250952 zxr
  56. zhyfly@zhyfly:~/bash$
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-04-25 11:08 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

恩,我也有差不多的问题。
不过我只要能把指定mmyy下的文件都读出就好了。
不要精确到日和和时间。

看来这种时间问题还蛮多的嘛。

论坛徽章:
0
4 [报告]
发表于 2005-04-25 11:11 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

恩,可行!
不过如果我不要是2005这种格式,只要05来表示年,怎么办呢
谢谢

论坛徽章:
0
5 [报告]
发表于 2005-04-25 11:17 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

  1. zhyfly@zhyfly:~/picture$ ls -l
  2. total 204
  3. -rw-r--r--  1 zhyfly zhyfly  97023 2005-04-19 10:51 小佳佳睡觉了.jpg
  4. -rw-r--r--  1 zhyfly zhyfly 106872 2005-04-19 10:49 我的小佳佳.jpg
  5. zhyfly@zhyfly:~/picture$ ls -l|awk '{print $6,$8}'|sed  -e 's/-\([0-9][0-9]\)-\([0-9][0-9]\)/\1/g'

  6. 200504 小佳佳睡觉了.jpg
  7. 200504 我的小佳佳.jpg
  8. zhyfly@zhyfly:~/picture$
复制代码

论坛徽章:
0
6 [报告]
发表于 2005-04-25 11:22 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

不过我要的是前面的年变为两个字符表示的
2005变成05表示。

另外怎么才能把月份用英文缩写表示出来呢。04月---> Apr

再次请教啦。

论坛徽章:
0
7 [报告]
发表于 2005-04-25 13:49 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

  1. zhyfly@zhyfly:~/picture$ ls -l|awk '{print $6,$8}'|sed  -e 's/-\([0-9][0-9]\)-\([0-9][0-9]\)/\1/g'|sed -e 's/^20//g'

  2. 0504 小佳佳睡觉了.jpg
  3. 0504 我的小佳佳.jpg
  4. zhyfly@zhyfly:~/picture$
复制代码

如果只把04替换那就简单,如果根据各个月自动替换就复杂点了!

论坛徽章:
0
8 [报告]
发表于 2005-04-25 14:07 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

对啊,就要能自动替换啊 实现这种功能啊!
archive –v –d 0205 –d Tutorial
/# archive files from the Tutorial sub-directory whose modification date is before Feb 2005 in a verbose mode – meaning display a line of information about each file that is being archived #/

exercise1: last modified 2001 MAY
trial: last modified 2002 JAN
core: last modified 2003 FEB
exercise5: last modified 2004 JAN

论坛徽章:
0
9 [报告]
发表于 2005-04-25 15:37 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

各位 我怎么觉得你们说的 跟我问的不大一样呢?
我用ls -l命令出来的文件日期格式是 Apr 22 09:29 1.txt
格式的啊。。。
还有就是 比如说这个1。txt里面有个字段是表示时间的, 格式是 20050423
那我就需要比较Apr 22 和0423 (4月22和4月23)
应该如何比较呢?
取时间应该是用substr可以办到。。。。。

论坛徽章:
0
10 [报告]
发表于 2005-04-25 21:05 |只看该作者

急急! 如何用shell读取unix下文件的创建时间并比较!

为什么要绕那么多弯路呢?
  1. touch -d 050423 a
复制代码

创建一个时间基准文件(时间还可以设得更准确,自己man下touch),然后就可以判断了
  1. [ myfile -ef a ]
复制代码
表示我的与基准时间相同
  1. [ myfile -nt a ]
复制代码
表示我的比基准时间早
  1. [ myfile -ot a ]
复制代码
表示我的比基准时间晚
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP