UNIX统计时间格式

sco*_*777 10 bash formatting time

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

stat -c '%n %A %z' $filename
Run Code Online (Sandbox Code Playgroud)

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

示例输出如下:

/lib drwxr-xr-x 2010-11-15 04:02:38.000000000 -0800
Run Code Online (Sandbox Code Playgroud)

Adr*_*onk 7

你可以尝试类似的东西:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"
Run Code Online (Sandbox Code Playgroud)

这只给你一个日期.您可以使用日期的格式选项格式化日期(请参阅人日期),例如:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs" '+%F %X'
Run Code Online (Sandbox Code Playgroud)

这不会给你名字和权限,但你可以这样做:

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


Pau*_*ce. 6

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

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

编辑:

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

stat -c '%n %A %.19z' "$filename"
Run Code Online (Sandbox Code Playgroud)

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