简介:

在 Linux 命令行下,我们常常使用 stat 来查看文件的 访问(access)、修改(modify)、改变(change) 的时间,但是 stat 的输出格式只有两种:

figure_1: stat

第一个是 正常的日历时间,小数点后面是 毫秒;
第二个是 从 1970-01-01 到现在经过的 秒数。
如果我们想要它的输出格式像 date 一样丰富,那该怎么办?

1. date 命令

我们来看一下 date (man date)这个命令:
figure_2: man date
有没有发现 date 接受字符串, 并且将字符串输出, 而不是输出当前时间(这个默认行为)。

2. stat、date 结合

我们现在尝试使用将 state 的时间输出传递给 date:

#date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"
#Sat Sep 17 13:52:02 CST 2016

这样时间的格式就是我们想要的结果了。
格式化结果
当然我们还可以对这个结果进行格式化输出,比如:

#date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs" '+%F %X'
#2016-09-17 13:52:02

其他内容输出
当然我们还可输出文件名、访问权限, 比如:

#echo "$(stat -c '%n %A' $filename) $(date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"  '+%F %X')"
#test.file -rw-r--r-- 2016-09-17 13:52:02
Logo

更多推荐