파일의 모든 타임 스탬프를 확인하는 방법은 무엇입니까?


52

Linux에서 파일의 모든 타임 스탬프를 확인하는 명령이 있습니까?

파일에서 마지막으로 수정, 생성 및 터치 한 날짜를 보려고합니다.


4
지적하자면, 리눅스 파일에는 생년월일이 없습니다. 따라서 파일이 작성된 날짜를 결정할 수 없습니다.
FatalError

= (. 나에게 지적 해 주셔서 감사합니다.
Mechaflash

4
@FatalError : 다양한 파일 시스템이 이미 생성 / 생성 타임 스탬프를 지원합니다. 실제 문제는 그러한 추가 정보 에 접근 하는 것입니다. ( struct stat불행히도 문제를 일으키지 않고 확장 할 수는 없습니다 ...) debugfs -R "stat <1234>" /dev/sdXYext4를 시도 1234하여 ino로 대체 할 수 있습니다 .
grawity

@grawity : 깔끔한! 나는 항상 fs가없는 이유를 궁금해했지만 ... 그렇다고 생각하지만, 당신이 말했듯이 기존 바이너리에 대한 ABI를 깨뜨릴 수는 없습니다. 팁 고마워 :).
FatalError

1
@FatalError, Linux stat명령 으로 생년월일을 표시 할 수 있습니다. 파일 생성 날짜를 찾는 방법을 참조하십시오 . 그리고 리눅스에 어떤 파일 시스템은 생성 시간을 저장? .
Franklin Piat

답변:


72

명령이 호출 stat됩니다.

$ stat test
234881026 41570368 -rw-r--r-- 1 werner staff 0 0 "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" 4096 0 0 test

출력은 OS에 따라 다르며 Linux / Unix에 따라 다르므로 형식을 조정하려면 매뉴얼 페이지를 참조하십시오.

일반적으로 일반 디렉토리 목록을 통해 시간을 얻을 수 있습니다.

  • ls -l 파일 내용을 마지막으로 수정했을 때 mtime
  • ls -lc파일 상태 수정의 마지막 시간을 출력합니다 ctime( 차이점은 무엇입니까? ).
  • ls -lu마지막 액세스 시간을 출력합니다 atime(이 개념의 유용성은 토론의 대상 이되지만 )

물론 ctime파일이 "만들어진"시점은 기록하지 않습니다. POSIX 사양은 세 개의 타임 스탬프 만 정의하지만 일부 Linux 파일 시스템 은 출생 시간 / 생성 시간을 저장합니다. 파일 생성 날짜를 찾는 방법은 무엇입니까? 이러한 지원되는 구성에서

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'

stat정말 상세합니다. 그러나 ls한 줄만 필요합니다. 초를 표시 할 수 있으면 좋을 것입니다. 그러나 파일 목록을 만들 때 전자가 완벽하게 적합합니다.
neverMind9

ls -l은 저에게 빠른 솔루션이었습니다
Andrew

ls -lBusyBox가 설치되어있을 때 (Android에) 다른 날짜 형식을 표시 할 수 있음을 알았습니다 . 그것 없이는 "2019-07-26 14:41"과 같고 그것과 함께 "May 6 21:27"과 같다고 생각합니다. 올해는 어떻게 빠졌습니까? 그것없이 형식을 사용하여 그것을 강제하는 방법이 있습니까?
안드로이드 개발자

@androiddeveloper 내가 말했듯이 대답은 OS에 달려 있습니다. 새로운 질문을 열어야한다고 생각합니다. Android에 대해 구체적으로 이야기한다면 Stack Overflow 또는 Android 애호가 가 더 적합 할 것입니다.
slhck

@slhck BusyBox가 설치된 것과 동일한 OS입니다. 표시 될 형식을 가져올 수 있는지 (의미 : 사용할 명령이 있는지) 물었습니다.
안드로이드 개발자

21

단지가 있습니다 에 의해 정의 된 파일의 각 저장 별개의 시간 값 POSIX 표준 : http://pubs.opengroup.org/onlinepubs/9699919799/ (참조 자료 정의 -> 4. 일반 개념 -> 4.8 파일 섹션을 타임스 업데이트)

각 파일에는 마지막 데이터 액세스 시간, 마지막 데이터 수정 시간 및 파일 상태가 마지막으로 변경된 시간의 세 가지 고유 한 타임 스탬프가 있습니다. 이 값은 <sys / stat.h>에 설명 된대로 파일 특성 구조 struct stat에 리턴됩니다 .

그리고 <sys / stat.h>에서 :

atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.

다음 예제는 atime , mtimectime 의 차이점을 보여줍니다. 이러한 예제는 GNU / Linux BASH에 있습니다. stat -xMac OS X 또는 다른 BSD Dist에서 사용할 수 있습니다 . 비슷한 출력 형식을 볼 수 있습니다.

$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ touch test
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

파일이 방금 생성되면 세 개의 타임 스탬프가 동일합니다.


1. 시간

먼저 파일을 읽 거나 ( ) 인쇄 하거나 ( ) 다른 파일로 복사 하여 ( ) 파일의 데이터에 액세스 합시다 .lessvimcatcp

$ cat test #Nothing will be printed out, since the file is empty
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800  <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

2. ctime

이제하도록 변경 허가를 (변경하여, 파일 상태를 chmod() 또는 이름을 변경 mv)

$ chmod u+x test
$ stat stet
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800  <-- ctime Changed!
$    
$ mv test testing
$ stat testing
  File: `testing'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800  <-- ctime Changed again!

지금까지 파일 의 내용 ( data )은 파일을 작성할 때와 여전히 동일합니다.


3. mtime

마지막으로 파일을 편집하여 파일 내용을 수정 해 봅시다 .

$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
  File: `testing'
  Size: 56          Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800  <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800  <-- ctime also Changed!

4. 출생 시간

또한 최신 버전 stat(예 : stat --version 8.13Ubuntu 12.04)에는 네 번째 타임 스탬프 정보 ( 출생 시간 (파일 작성 시간))가 있습니다. 지금은 정확한 시간을 표시하지 않을 수도 있지만

$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ stat birth_time
  File: `birth_time'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 4073946     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ bingyao)   Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
 Birth: -

10 : 46 : 48.838718970의 의미는 무엇입니까? HH : MM : SS. 나노초?
Dzung Nguyen

2
. "커널 2.5.48부터 stat 구조는 세 개의 파일 타임 스탬프 필드에 대해 나노초 해상도를 지원합니다 ...."
Tom Lord

필요한 경우 루트 액세스 및 debugfs를 사용하여 생성 시간을 알아낼 수 있습니다. moiseevigor.github.io/software/2015/01/30/…
Mikko Rantalainen

2
출생 시간… 기쁘게 생각합니다. 마지막 수정 및 마지막 변경은 거의 같은 목적이지만 여전히 구별되기 때문입니다. 4 개가 모두 있으면 좋습니다 .
neverMind9
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.