답변:
그것은 ls
구현에 달려 있습니다 . GNU / 리눅스 시스템에서 찾은 4 가지 중 :
$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
GNUls
, GNU 프로젝트 (GNU coreutils 컬렉션). 데비안 (Linux 또는 kFreeBSD 커널), Cygwin 또는 Fedora와 같은 GNU 시스템에서 일반적으로 발견되는 것입니다.
$ gnu-ls -rt
a c b
ls
로부터 가보 toolchest을 , 오픈 솔라리스 툴 포트 :
$ heirloom-ls -rt
a b c
ls
에서 AT & T 오픈 소스 수집 , 아마도 내장 ksh93
. 꽤 멋진 확장 기능을 가진 또 다른 기능 :
$ ast-ls -rt
a c b
$ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
ls is a shell builtin version of /opt/ast/bin/ls
a c b
busybox (대부분의 (일반적으로 임베디드) Linux 기반 시스템에서 발견 된 (또는 파생 된)) :
$ busybox ls -rt
c b a
따라서, GNU와 ast ls
는 소수 부분을 고려합니다. 다른 것들은 같은 초 안에 마지막으로 수정 된 파일들에 대한 어휘 비교로 돌아갑니다. busybox만이 그곳을 ls
존중합니다 -r
.
필자의 테스트에서 FreeBSD ls
는 초 미만의 정밀도도 지원합니다 (VFS 수준에서 활성화 된 경우 vfs.timestamp_precision
sysctl 참조 ).
zsh
의 globs ( om
글로브 한정자를 사용하여 수정 시간을 주문하고 Om
역순으로 주문하는 경우)도 전체 시간이 걸립니다.
$ echo *(Om)
a c b
GNU의 ls
구현 과 관련하여 running ls -l
은 파일을 알파벳 순서 ls -lt
로 정렬하고 수정 시간 순서대로 파일을 기본 파일 시스템에서 지원하는 최대 정확도로 정렬합니다. --full-time
옵션을 사용하여이를 확인할 수 있습니다 .
따라서 귀하의 질문에 대답하기 위해 가능한 한 확장 할 수는 있지만 사용하는 경우에만 -t
(그렇지 않으면 기본적으로 알파벳으로 설정 됨) 지원하는 구현을 사용하고 있습니다 (자세한 내용은
Stéphane의 답변 참조). 예를 들어 ext4
필요한 타임 스탬프 데이터를 저장하기에 충분히 큰 inode가 주어지면 나노초 정밀도를 지원할 수 있습니다.
그렇습니다.
테스트하려면 시차가 작은 두 개의 파일을 만드십시오.
$ touch aa; sleep 0.2; touch bb
수정 시간 확인 :
$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000
목록은 다음과 같은 차이점을 사용합니다.
$ ls -lt aa bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 aa
로 --full-time
차이가 분명있을 것입니다.
$ ls -lt --full-time aa bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.364248042 0000 bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.072248226 0000 aa
bb
하고 aa
뒤로.