将 stat 格式设置为类似于 ls -l

将 stat 格式设置为类似于 ls -l

我会列出尽可能多的复制内容,ls -l以便stat我可以看到八进制数字。

我已经非常接近了stat -c '%a------- %h %U %G %5s %.16y %n' *

me@PC:/etc/apt$ ls -l
total 76
drwxr-xr-x 2 root root  4096 Sep  2 15:50 apt.conf.d
drwxr-xr-x 2 root root  4096 Apr  9  2020 auth.conf.d
drwxr-xr-x 2 root root  4096 Jul 28 03:26 keyrings
drwxr-xr-x 2 root root  4096 Jul 12  2021 preferences.d
-rw-rw-r-- 1 root root  2796 Aug 23 11:02 sources.list
drwxr-xr-x 2 root root  4096 Sep  2 15:50 sources.list.d
-rw-rw-r-- 1 root root  3071 Aug 23 11:02 sources.list.distUpgrade
-rw-rw-r-- 1 root root  3071 Jun 27 13:04 sources.list.save
-rw-r--r-- 1 root root 18951 Mar 27 17:15 trusted.gpg
-rw-r--r-- 1 root root 17320 Feb  7  2022 trusted.gpg~
drwxr-xr-x 2 root root  4096 Sep  2 15:50 trusted.gpg.d

me@PC:/etc/apt$ stat -c '%a------- %h %U %G %5s %.16y %n' *
755------- 2 root root  4096 2022-09-02 15:50 apt.conf.d
755------- 2 root root  4096 2020-04-09 06:21 auth.conf.d
755------- 2 root root  4096 2022-07-28 03:26 keyrings
755------- 2 root root  4096 2021-07-12 06:26 preferences.d
664------- 1 root root  2796 2022-08-23 11:02 sources.list
755------- 2 root root  4096 2022-09-02 15:50 sources.list.d
664------- 1 root root  3071 2022-08-23 11:02 sources.list.distUpgrade
664------- 1 root root  3071 2022-06-27 13:04 sources.list.save
644------- 1 root root 18951 2022-03-27 17:15 trusted.gpg
644------- 1 root root 17320 2022-02-07 22:44 trusted.gpg~
755------- 2 root root  4096 2022-09-02 15:50 trusted.gpg.d

所有数据都在那里,但日期格式略有偏差。

可以通过 xargs 和 printf 或其他方式重新格式化日期吗?或者是我能得到的最接近的值?

答案1

这是一个小脚本,首先:

IFS=$'\n'
for i in $(stat --printf="%a\t%h\t%U\t%G\t%s\t%Y\t%n\n" *); do
  IFS=$'\t' read -r -a FP <<<$i; 
  echo ${FP[0]} ${FP[1]} ${FP[2]} ${FP[3]} ${FP[4]} $(date -d@${FP[5]} "+%Y.%m.%d. %H:%M") ${FP[6]} 
done

这样您就可以处理每个文件属性。例如,如果用户名或组太长,则 ls 将显示 uid/gid,等等。

相关内容