ls -l
파일의 수정 타임스탬프(최대 초)만 표시합니다. 두 파일의 초 단위 타임스탬프가 동일하지만 정확히 동시에 수정되지 않은 경우 ls -lt
파일은 정확한 mtime 순으로 정렬되거나 대략 mtime 초 단위 순으로만 정렬됩니다(따라서 파일 간 순서는 무작위일 수 있음).
답변1
ls
구현 에 따라 많은 것이 달라집니다 . 그 중 4개는 GNU/Linux 시스템에서 발견됩니다:
$ 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
암소 비슷한 일종의 영양
ls
, GNU 프로젝트의 것(GNU의핵심 도구모으다). 이는 Debian(Linux 또는 kFreeBSD 커널), Cygwin 또는 Fedora와 같은 GNU 시스템에서 일반적인 것입니다.$ gnu-ls -rt a c b
ls
~에서가보 도구 상자, OpenSolaris 도구의 포트:$ 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
1초 미만의 정밀도도 지원합니다(VFS 수준에서 활성화된 경우 vfs.timestamp_precision
sysctl 참조).
zsh
glob( 역순으로 om
glob 한정자를 사용하여 수정 시간별로 정렬됨 Om
)에도 전체 시간이 걸립니다.
$ echo *(Om)
a c b
답변2
GNU ls
구현의 경우 런타임은 ls -l
파일을 알파벳순으로 정렬하고 ls -lt
기본 파일 시스템에서 지원하는 가장 높은 정밀도를 사용하여 수정 시간 순서로 최신순으로 파일을 정렬합니다. 이 --full-time
옵션을 사용하여 확인할 수 있습니다.
따라서 귀하의 질문에 대답하려면 예, 최대로 확장되지만 이를 사용하고 -t
(그렇지 않으면 기본적으로 알파벳 순서로 설정됨) 이를 지원하는 구현을 사용하는 경우에만 가능합니다(참조
스티븐의 대답자세한 내용은). 예를 들어, ext4
필요한 타임스탬프 데이터를 저장할 만큼 큰 inode가 있는 경우 나노초 정밀도가 지원될 수 있습니다.
답변3
출력을 비교하면 확인할 수 있습니다
ls -lat
그리고
ls -lat --full-time
순서에 임의적인 것은 없습니다.
답변4
예, 그럴 것입니다.
테스트를 위해 약간의 시간 차이가 있는 두 개의 파일을 만듭니다.
$ 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
목록은 다음과 같은 diff를 사용합니다.
$ 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