stat形式をls -lと同じ形式で指定してください。

stat形式をls -lと同じ形式で指定してください。

8進数を表示できるようにできるだけ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などを表示します。

おすすめ記事