免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
打印 上一主题 下一主题

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式 [复制链接]

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

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

在linux下的就方便了,可以用--time-style直接定制日期格式

论坛徽章:
0
12 [报告]
发表于 2005-04-29 14:20 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

哎。。。怎么又没人给讲讲了呢。。。。
高手些都跑哪去了哦

论坛徽章:
0
13 [报告]
发表于 2005-04-29 15:09 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

上午没找出空来,不好意思
  1. $ls -l
  2. total 6
  3. -rw-r--r--   1 tmn      tmn           34 Apr 29 14:33 a1.txt
  4. -rw-r--r--   1 tmn      tmn           34 Apr 29 15:02 a2.txt
  5. -rwxr-xr-x   1 tmn      tmn          833 Apr 29 14:59 datealarm.sh
  6. $cat a1.txt
  7. 12313 200504271329 31252543656457
  8. $cat a2.txt
  9. 12313 200504291329 31252543656457
  10. $cat datealarm.sh
  11. #!/bin/ksh
  12. #made by sunyin at Fri Apr 29 14:33:46 CST 2005
  13. #set -vx
  14. set -a

  15. get_before_days()
  16. {
  17.   str=$1
  18.   days=$2
  19.   yy=`echo $str|cut -c 1-4`
  20.   mm=`echo $str|cut -c 5-6`
  21.   dd=`echo $str|cut -c 7-8`
  22.   sav_dd=$days
  23.   days=`expr $days - $dd`
  24.   while [ $days -ge 0 ]
  25.   do
  26.   mm=`expr $mm - 1`
  27.   [ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
  28.   aaa=`cal $mm $yy`
  29.   bbb=`echo $aaa|awk '{print $NF}'`
  30.   days=`expr $days - $bbb`
  31.   done
  32.   dd=`expr 0 - $days`
  33.   expr $dd : "^.$" > /dev/null && dd=0$dd
  34.   expr $mm : "^.$" > /dev/null && mm=0$mm
  35.   echo $yy$mm$dd
  36. }

  37. for i in $(ls !($0))
  38. do
  39.   contentdate=$(awk '{print substr($2,1,8)}' $i)
  40.   compdate=$(get_before_days $contentdate -1)
  41.   comptime=$(awk '{print substr($2,9,12)}' $i)
  42.   touch -t $compdate$comptime tmp
  43.   if [[ "$i" -nt "tmp" ]]
  44.   then echo $i alarm
  45.   else echo $i ok
  46.   fi
  47. done
  48. rm tmp
  49. $datealarm.sh
  50. a1.txt alarm
  51. a2.txt ok
复制代码
执行无任何要求,solaris8下测试通过

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

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

忘记了一条
  1. $date
  2. Fri Apr 29 15:08:37 CST 2005
复制代码

论坛徽章:
0
15 [报告]
发表于 2005-04-29 17:58 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

在我彻底失望的时候, 一梦如是忽然来了!!
感谢感谢哈!
我各人先回去测试了再说!!
谢谢哦

论坛徽章:
0
16 [报告]
发表于 2005-04-29 19:47 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

一梦如是, 万分感谢您的代码, 我回家测试了,还有几个疑问和请求需要您帮忙:
1. 对于多记录数的文件,程序执行不下去哦
比如a.txt:
324364354657  --每个文件都有一条首记录
12313 200504282129 31252543656457
12313 200504272129 31252543656457

2. 能不能让报警出具体某一条记录? 比如a.txt里面的多条记录就一条报警,则报出
a1.txt alarm:12313 200504272129 31252543656457

3. 如果sh程序跟文件不在同一目录下, 且sh只对目录下的命名ACA开头的文件而不是所有文件执行呢?

4. 请您帮我注明一下,哪个语句是取日期位数的, 因为具体的日期字段的位置还要根据我文件的格式定义

谢谢!!!!

论坛徽章:
0
17 [报告]
发表于 2005-04-29 20:15 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

文件是既有单行的也有多行的么?还是都是多行的?

论坛徽章:
0
18 [报告]
发表于 2005-04-29 20:20 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

我又仔细研究了代码, 想起上次一梦如是告诉过我怎么调试的 ^_^
就是把set -vx打开
代码中
contentdate=$(awk '{print substr($2,1,}' $i) 应该就是取文件记录中的日期吧,
$cat a1.txt
12313 200504271329 31252543656457
日期应该是substr($0, 7,  
我改成这个, 也可以出结果哎.....

调试以后, 对代码也看懂了不少了

论坛徽章:
0
19 [报告]
发表于 2005-04-29 20:22 |只看该作者

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

高手您来了...
   都是多行的, 而且每个文件还有一行首记录, 是不需要判断日期的。。。

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

在线等!如何用实现把创建文件的时间读取为”MMDDhhmm"格式

contentdate=$(awk '{print substr($2,1,}' $i)
这句是取日期没错,您的代码在对a1.txt操作时也不会出问题,但如果a3.txt中内容是
1231 200504271329 31252543656457
时,就会取错位置了,我的代码是先定位第二个域,再定位日期,更通用一些
另外下面这句是取时间的
comptime=$(awk '{print substr($2,9,12)}' $i)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP