-newer
테스트가 원하는 만큼 정확하지 않은 것 같습니다 . 다음을 사용하여 ls -lt
올바른 정렬 순서를 얻습니다 .
-rw-r--r--@ 1 p staff 48 Jan 26 14:42 foo.gdb
-rw-r--r--@ 1 p staff 328971 Jan 26 14:42 foo.pdf
-rw-r--r--@ 1 p staff 3133 Dec 14 05:52 foo.tex
그러나 -newer
테스트 결과를 사용하면 다음과 같습니다.
../isNewer.sh foo.gdb foo.pdf
File 1 is older than file 2
../isNewer.sh foo.pdf foo.gdb
File 1 is older than file 2
../isNewer.sh
어디
#!/bin/bash
if [ $1 -nt $2 ]; then
echo "File 1 is newer than file 2"
else
echo "File 1 is older than file 2"
fi
출력 stat
:
stat foo.pdf foo.gdb
주석에서 요청한 대로 출력(가독성을 위해 수동으로 공백을 추가함)은 다음과 같습니다.
16777217 255313605 -rw-r--r-- 1 p staff 0 328971 "Jan 26 21:28:06 2017" "Jan 26 14:42:16 2017" "Jan 26 21:27:33 2017" "Jan 26 14:42:16 2017" 4096 648 0 foo.pdf
16777217 255313604 -rw-r--r-- 1 p staff 0 48 "Jan 26 21:27:33 2017" "Jan 26 14:42:16 2017" "Jan 26 21:27:33 2017" "Jan 26 14:42:16 2017" 4096 8 0 foo.gdb
질문:
- 테스트는 얼마나 정확합니까
-newer
>? - 한 파일이 다른 파일보다 최신인지 여부를 보다 세부적으로 테스트할 수 있는 다른 방법이 있습니까(아마도 분이 아닌 초 단위로 비교)?
플랫폼:
- Bash 3.2.53(1) 릴리스가 포함된 MacOS
답변1
운영자는 -nt
두 파일의 기간을 비교할 때 마지막으로 수정된 시간을 사용합니다.
출력 에 따르면 stat
이 예의 두 파일에는정확히 같은 수정 시간(두 번째까지 정확함), Jan 26 14:42:16 2017
(출력의 두 번째 타임스탬프 stat
)
따라서 한 파일은 다른 파일보다 "최신" 파일이 아니며 테스트 실행 순서에 관계없이 테스트는 false를 반환합니다.