파일의 줄 수와 파일의 마지막 수정 날짜를 읽으려고 합니다(예를 들어 마지막 수정 날짜가 2013년 1월 18일인 경우 출력되어야 함 2013-01-18
). 그런 다음 해당 데이터를 다음과 같은 입력 파일에 추가합니다. 형태 theFile: 4 lines, modified on 2013-01-18
. 에코를 사용하여 출력하기 전에 이 두 데이터를 자체 변수에 저장해 보았습니다.
#!/bin/sh
totLines=$(wc -l < $1)
modDate=$(date -r $1)
echo $1: $totLines "lines, modified on" $modDate >> $1
마지막 수정 날짜를 찾는 방법이 정확합니까? 나는 그렇다고 들었지만 그것에 대한 정보를 찾을 수 없고 date -r
내가 시도하는 어떤 스크립트에서도 작동하도록 할 수 없기 때문에 이유를 이해할 수 없습니다. 통계를 사용하는 것도 있지만 stat -c %y $1
내가 얻는 곳에서는 사용할 수 없습니다.stat: illegal option -- c
답변1
둘 다 GNU에 date -r
특화 되어 있습니다 stat
. 아마도 Linux 사용자는 다른 시스템을 사용하고 있다고 말할 수도 있습니다.
불행하게도 이 정보를 안정적으로 얻을 수 있는 표준 명령은 없습니다. 가장 휴대성이 뛰어난 것은 다음과 같습니다.
modDate=$(perl -MPOSIX -le '@s=stat shift or die$!;
print strftime "%Y-%m-%d", localtime $s[9]' -- "$1") || exit
zsh
자체 내장 stat
명령이 있습니다.
zmodload zsh/stat
zstat -F %F +mtime -- "$1"
(symlink에 대한 위의 두 명령은 GNU에서와 마찬가지로 심볼릭 링크 대상의 수정 시간을 반환합니다 date -r
. 심볼릭 링크의 시간을 원하는 경우(GNU 명령과 마찬가지로 ) stat
솔루션을stat
로 변경하거나 추가합니다.) .lstat
perl
-L
zstat
반품,변수 주위에 큰따옴표를 잊어버렸습니다.그리고 임의의 데이터에 사용해서는 안 됩니다 echo
.