`stat` 输出格式:截断时间字段

`stat` 输出格式:截断时间字段

参考:`stat` 输出格式:截断日期字段

他们使用 stat 命令提取日期的方式:

stat -c '%.10y' file

我的最终命令如下所示:

stat -c "%y %i %A %n" *

我想修改 '%y' 以便我只得到时间。我想定义一个从 12 到 20 的范围,而不是“.11”。有没有办法做到这一点,这种类型的格式称为什么?

默认时间是:

2021-06-19 13:46:30.201999800 +0530

但我想要:

13:46:30

最终输出:

13:46:29 11540474045615128 -rw-r--r-- __temp__
13:49:03 14918173767136212 -rw-r--r-- __TEM__.txt
13:46:29 9007199255101576 -rw-r--r-- bla.txt
13:49:58 1125899908323122 -rwxr-xr-x f.sh
13:46:30 1125899908323121 -rwxr-xr-x Q1 2.sh

答案1

您始终可以使用zsh'sstat内置命令来代替(它早于 GNU stat;要注意不同的系统有不同且不兼容的 实现stat,它不是标准命令):

#! /bin/zsh -
zmodload zsh/stat
for f (*(N)) {
  stat -F%T -LH s -- $f &&
    print -r $s[mtime] $s[inode] $s[mode] $f
}

答案2

您可以格式化字符串以仅显示日期和时间,然后使用 cut 删除第一列:

stat -c '%.19y %i %A %n' * | cut -d' ' -f2-

编辑:根据要求添加切割参数描述。

-d' '   ; use space character as field delimiter
-f2-    ; print field number 2 and continue to end of line 
          (aka delete first field/column in this case)

答案3

我已经使用 awk 来获取所需的内容

 stat -c '%y %i %A %n' k |awk '{gsub(/^[0-9]*-[0-9]*-[0-9]* /,"",$0);$2="";gsub(/\..*/,"",$1);print }'

测试并运行良好

相关内容