이런 식으로 폴더의 속성을 나열했습니다.
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
GNU zsh
보다 몇 년 앞서 있음):
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