他们使用 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 }'
测试并运行良好