乐啤露的专栏

百忙之中专注于技术

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

困扰了好几天的多文件tar解包和date输出前一小时时间

说来也真是的,linux也折腾了好几年,这两个最简单也最复杂的命令却没搞定,惭愧呀。

先说tar,这个命令我一直认为功能超强,这次却遇到了麻烦
一共有好几百tar ball,现在要全部解开,直接写tar xvf access_log*.tar 报错,记得有个-T参数可以输入一个文件列表,结果折腾了半天也没成功,最后只能求助于awk了,用了笨笨的办法解决。
# ll *.tar >dirlist
dirlist的内容:
-rw-r--r--    1 root     root     162498560 Nov 15 15:54 access_log.20041108.46.1.161845.tar
-rw-r--r--    1 root     root       102400 Nov 15 15:54 access_log.20041108.46.1.162221.tar
-rw-r--r--    1 root     root        20480 Nov 15 15:54 access_log.20041108.46.1.162400.tar
-rw-r--r--    1 root     root        71680 Nov 15 15:54 access_log.20041108.46.1.162849.tar
-rw-r--r--    1 root     root     14868480 Nov 15 15:54 access_log.20041109.46.2.095845.tar
.....................

# awk '{print $9}' dirlist >logfilelist
logfilelist的内容:
access_log.20041108.46.1.161845.tar
access_log.20041108.46.1.162221.tar
access_log.20041108.46.1.162400.tar
access_log.20041108.46.1.162849.tar
access_log.20041109.46.2.095845.tar
.............................

# awk '{print "tar vxf "$1}' logfilelist >tarxlog
# chmod +x tarxlog
# ./tarxlog

总算如愿。本来还想看看mc中行不行呢,无奈redhat as3默认没安装mc,作罢。

再来说date,又是一个再简单不过的命令,我想做的是输出上一小时的时间
也就是,现在的时间是Tue Nov 16 19:22:40 CST 2004
我要的输出时间是Tue Nov 16 18:22:40 CST 2004
找了半天,最流行的用法是date --date="yesterday"显示昨天的日期时间
于是顺藤摸瓜,找到
date --date="tomorrow"
date --date="hour"
大家可以试试都是什么,其中hour最好玩,竟然是输出一小时后的时间,而我要一小时前的时间,离胜利越来越近啦!

又试了很多参数,都是错的,终于,找到了!

date --date="-1 hour" 竟然行,哈哈
同理
date --date="-1 minute"
date --date="-1 day"

哈哈,这才是通用的做法呀。看到很多人在CU上问这种问题,终于找到了答案,幸福幸福。

posted on 2004-11-16 19:18  乐啤露  阅读(1272)  评论(1)    收藏  举报