`ls -lt`는 정확한 mtime을 존중합니까, 아니면 대략 초 단위의 mtime만 존중합니까?

`ls -lt`는 정확한 mtime을 존중합니까, 아니면 대략 초 단위의 mtime만 존중합니까?

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는 ls1초 미만의 정밀도도 지원합니다(VFS 수준에서 활성화된 경우 vfs.timestamp_precisionsysctl 참조).

zshglob( 역순으로 omglob 한정자를 사용하여 수정 시간별로 정렬됨 Om)에도 전체 시간이 걸립니다.

$ echo *(Om)
a c b

[ file1 -nt file2 ], 지원되는 경우 일반적으로 1초 미만의 세분성도 지원됩니다..

답변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

관련 정보