このようにフォルダのプロパティを一覧表示しました。
stat -c $'--------------
File: %n
Size: %s
Owner: %U
Group: %G
Permissions: %A'
しかし、時間を得るのに問題があります。 statを使用して時間を表現すると、最後に気に入らない数字がたくさん表示され、date -rを使用すると同じ内容を書き込むことができません。そこに並んでください。私と以前の他のすべての人のように。
次のように見えたいです。修正時間: 2019-11-13 11:34:54 (終わりに+0000なし)
答え1
<rant>あなたのコマンドstat
は、stat
2001年に以前の実装(1997年の組み込みコマンドや以前のIRIXなど)とはstat
まったく異なるAPIを使用してGNU coreutilsに登場しました。これはGNUの機能をコピーしますが、他のAPI(他のフォーマット指定子)はあまり役に立ちません。私はそれ以来これのために迷惑をかけた。 (1年後、BSDは他の(より良い)APIを使用して独自のstat
zsh
stat
find -printf
%x
stat
APIを実装しました。)</rant>
ここでGNUを使用できますfind
(この構文はGNUよりstat
少なくとも10年先です)。
find ./* -prune -printf '--------------
File: %f
Size: %s
Owner: %u
Group: %g
Permissions: %m
Modification time: %TF %8TT %Tz
'
出力は次のとおりです。
--------------
File: file
Size: 10
Owner: stephane
Group: stephane
Permissions: -rw-r--r--
Modification time: 2019-11-13 11:34:54 +0000
ここでは時間形式が使用されます%F %T %z
strftime()
。これは、タイムスタンプを秒単位で正確に表現する標準的で明確で、必要に応じて調整できます。%T<x>
(書式指定子はどこに<x>
ありますか?)最後のアクセス時間、状態変更時刻に使用される最後の修正時刻です。strftime()
%A<x>
%C<x>
%z
タイムゾーンオフセット仕様(上記)に興味がない場合は、それを削除してください。ただし、こうすると時間表現があいまいになります。%Tz
組み込み(やはりstat
GNUzsh
より数年早い):
zmodload zsh/stat
for f (*) {
stat -F '%F %T %z' -sLH s -- $f &&
print -r -- "--------------
File: $f
Size: $s[size]
Owner: $s[uid]
Group: $s[gid]
Permissions: $s[mode]
Modification time: $s[mtime]"
}
(%z
タイムゾーンオフセットを見たくない場合は、もう一度削除してください。)
警告注:シンボリックリンクの場合、GNU stat
(なし-L
)、GNU find -printf
(なし-L
)、およびzshはstat -L
シンボリックリンク自体の修正時間を報告しますが、GNU date -r
(およびGNU stat -L
、GNU、およびzshなしfind -L -printf
)はシンボリックリンクが最終的にチェックするファイルです。の mtime を報告します。到着stat
-L