`ls -lt`는 정확한 mtimes 또는 대략적인 mtimes를 최대 2 초까지 따릅니 까?


10

ls -l파일의 수정 타임 스탬프 만 초까지 표시합니다. 두 파일의 타임 스탬프가 최대 2 초이지만 정확히 동시에 수정되지 않은 ls -lt경우 정확한 mtime의 순서로 또는 대략적인 mtime의 순서로 파일을 정렬합니다 (따라서 파일 사이의 순서는 임의의)?

답변:


17

그것은 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_precisionsysctl 참조 ).

zsh의 globs ( om글로브 한정자를 사용하여 수정 시간을 주문하고 Om역순으로 주문하는 경우)도 전체 시간이 걸립니다.

$ echo *(Om)
a c b

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


1
GNU 이외의 도구가 POSIX를 위반합니까, 아니면 정렬을 위해 반올림을 지정합니까?
Kevin

2
ast-ls는 무엇입니까?
Random832

@ Random832, 편집 참조.
Stéphane Chazelas

2
@Kevin, 사양을 읽은 결과 그 점을 준수 하지 않습니다 . AFAICT, 사양에는 서브 초 부분을 무시할 수있는 것이 없으며 POSIX는 정확한 타임 스탬프를 검색하는 명확한 API를 제공합니다.
Stéphane Chazelas

1
@ikkachu, 당신이 맞아요. 나는 그것을 알아 차리지 못했다. 편집을 참조하십시오. 그것은 ast의 결과를 변경합니다.
Stéphane Chazelas

4

GNU의 ls구현 과 관련하여 running ls -l은 파일을 알파벳 순서 ls -lt로 정렬하고 수정 시간 순서대로 파일을 기본 파일 시스템에서 지원하는 최대 정확도로 정렬합니다. --full-time옵션을 사용하여이를 확인할 수 있습니다 .

따라서 귀하의 질문에 대답하기 위해 가능한 한 확장 할 수는 있지만 사용하는 경우에만 -t(그렇지 않으면 기본적으로 알파벳으로 설정 됨) 지원하는 구현을 사용하고 있습니다 (자세한 내용은 Stéphane의 답변 참조). 예를 들어 ext4필요한 타임 스탬프 데이터를 저장하기에 충분히 큰 inode가 주어지면 나노초 정밀도를 지원할 수 있습니다.


2
GNU ls에 대해서만 이야기한다는 답변을 추가해야합니다. 다르게 작동 할 수있는 다른 많은 구현이 있습니다.
Roland Illig

@RolandIllig 님이 추가 함
Joe

1

출력을 비교하면

ls -lat

ls -lat --full-time

정렬에 대한 임의의 것은 없습니다.


1

그렇습니다.

테스트하려면 시차가 작은 두 개의 파일을 만드십시오.

$ 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뒤로.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.