UNIX统计时间格式

时间:2010-11-15 05:05:34

标签: bash time formatting

是否可以格式化stat的时间输出?我正在使用

stat -c '%n %A %z' $filename

在bash脚本中,但它的时间格式不是我想要的。是否可以在命令中更改此格式,或者我必须稍后手动执行此操作?

示例输出如下:

/lib drwxr-xr-x 2010-11-15 04:02:38.000000000 -0800

2 个答案:

答案 0 :(得分:7)

您可以尝试以下方式:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"

仅提供日期。您可以使用日期的格式选项格式化日期(请参阅man date),例如:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs" '+%F %X'

这不会为您提供名称和权限,但您可以这样做:

echo "$(stat -c '%n %A' $filename) $(date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"  '+%F %X')"

答案 1 :(得分:5)

您可以像这样简单地删除小数部分:

stat -c '%n %A %z' "$filename" | sed 's/\(:[0-9]\{2\}\)\.[0-9]* /\1 /'

修改

这是截断小数部分的另一种方法:

stat -c '%n %A %.19z' "$filename"

这取决于19个字符长的日期:2010-11-15 04:02:38