날짜를 추출하는 방법은 stat 명령을 사용하는 것입니다.
stat -c '%.10y' file
내 마지막 명령은 다음과 같습니다.
stat -c "%y %i %A %n" *
시간만 얻을 수 있도록 '%y'를 수정하고 싶습니다. ".11"이 아닌 12에서 20 사이의 범위를 정의하고 싶습니다. 이를 수행할 수 있는 방법이 있습니까? 이러한 유형의 형식을 무엇이라고 합니까?
기본 시간은 다음과 같습니다:
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
대신 언제든지 의 내장 명령을 사용할 수 있습니다 stat
(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 }'
테스트를 거쳐 잘 작동함