LinuxSir.cn,穿越时空的Linuxsir!

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

用bash将lstat里的mtime转成正常时间的方法

[复制链接]
发表于 2010-4-15 11:50:57 | 显示全部楼层 |阅读模式
用lstate得到的文件时间是一串数字,如1271297291
如何转成正确的时间呢?目前发现
date --date=@1271297291
可以实现。
还有其他不依赖于date, 使用bash内建函数的方法吗?
发表于 2010-5-29 15:00:21 | 显示全部楼层
http://hi.baidu.com/goobaid/blog ... e5c1d6a044dfc0.html

相反的如果要将UNIX时间戳转换为UTC时间则是:

?View Code BASH
1
2
$date -d '1970-01-01 utc 1263236311 seconds'  +%Y-%m-%d-%H-%M=%S
2010-01-12-02-58-31
由此可以看出linux下的date命令还是十分强大的,更详细的介绍参看info date.
回复 支持 反对

使用道具 举报

发表于 2010-8-8 22:59:43 | 显示全部楼层
可以直接用ls,它支持date那样自定义格式显示:
ls -l --time-style "格式" <files>
比如
ls -l --time-style full-iso <filename>
ls -l --time-style long-iso <filename>
ls -l --time-style "+%s.%N" <filename>
ls -l --time-style "+%c" <filename>

另外也可以用纯bash“自动”取得取得相应的时间串,不过比较麻烦,我想到的如下:
  1. read -a a < <(ls -l --time-style '+s' <filename>)
  2. read -a b < <(ls -l --time-style '+%c' <filename>)
  3. for ((i=5;i<${#b[@]}-${#a[@]}+6;i++));do ts="$ts ${b[$i]}";done
  4. echo $ts
复制代码
一次只能处理一个文件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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