ファイルのすべてのタイムスタンプを確認する方法は?


52

Linuxにファイルのすべてのタイムスタンプをチェックするコマンドはありますか?

ファイルの最終変更日、作成日、および変更日を表示しようとしています。


4
指摘するだけですが、Linuxファイルには誕生日がありません。したがって、ファイルが作成された日付を特定することはできません。
-FatalError

=(。指摘してくれてありがとう。
Mechaflash

4
@FatalError:さまざまなファイルシステムがすでに誕生/作成タイムスタンプをサポートしています。本当の問題は、そのような追加情報にアクセスすることです。(struct stat残念ながら、物事を壊さずに拡張することはできません...)debugfs -R "stat <1234>" /dev/sdXYext4を試して1234、ino に置き換えることができます。
悲しみ

@grawity:きちんとした!私はいつもfsにそれがなかった理由を疑問に思っていました...しかし、私はそれらがそうであると思いますが、あなたが言ったように、既存のバイナリのためにABIを壊すことはできません。ヒントをありがとう:)。
-FatalError

回答:


73

コマンドはと呼ばれ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仕様では3つのタイムスタンプのみが定義されていますが、一部のLinuxファイルシステムでは Birth Time / Creation Timeが保存されますファイルの作成日を見つける方法は?このようなサポートされている構成では、次を使用できます。

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

stat本当に詳細です。ただしls、必要なのは1行だけです。秒も表示できると便利です。ただし、ファイルのリストを作成する場合、前者が完全に適しています。
-neverMind9

ls -lは私にとって迅速な解決策でした
Andrew

ls -lBusyBoxがインストールされている場合(Android上)に、結果に異なる日付形式が表示されることに気付きました。これがないと「2019-07-26 14:41」のようになり、それがあると「5月6日21:27」のようになると思います。今年はどうして行方不明になったのですか?それなしの形式を使用して強制する方法はありますか?
Android開発者

@androiddeveloper私が言ったように、答えはOSに依存します。新しい質問を開くべきだと思います。特にAndroidについて話している場合は、おそらくStack OverflowまたはAndroid Enthusiastsの方が適しています。
slhck

@slhckまあ、これは同じOSで、BusyBoxがインストールされているだけです。表示される形式を取得することが可能かどうか(つまり、使用するコマンドがあるかどうか)を尋ねました。
Android開発者

21

POSIX規格で定義されているように、ファイルごとに保存される3つの異なる時間値のみがあります:http : //pubs.opengroup.org/onlinepubs/9699919799/基本定義セクション-> 4.一般概念-> 4.8ファイルを参照タイムズアップデート)

各ファイルには、最後のデータアクセス時刻、最後のデータ変更時刻、およびファイルステータスが最後に変更された時刻の3つの異なるタイムスタンプが関連付けられています。これらの値は、<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.

次の例は、atimemtimectimeの違いを示しています。これらの例は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

ファイルが作成されたばかりの場合、3つのタイムスタンプは同じです。


1. atime

まず、ファイルのデータにアクセスして(lessまたはvim)読み取り、印刷(cat)するか、別のファイルにコピーします(cp)。

$ 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

次に、許可を変更するか()、名前を変更して()ファイルのステータスを変更します。chmodmv

$ 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.誕生時間

また、新しいバージョンstatstat --version 8.13Ubuntu 12.04など)には4番目のタイムスタンプ情報であるBirth Time(ファイル作成時間)があることに注意してください。現時点では正しい時刻が表示されない場合があります。

$ 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。ナノ秒?
ズングエン

2
はい「カーネル2.5.48以降、stat構造は3つのファイルタイムスタンプフィールドのナノ秒解像度をサポートしています。...」
Tom Lord

必要に応じて、rootアクセスとdebugfsを使用して作成時間を把握できます。moiseevigor.github.io
Mikko Rantalainen

2
誕生時間…喜んで。なぜなら、最終変更と最終変更はほぼ同じ目的のためであるが、それでもなお異なるからです。4つすべてが存在する場合、それは良いことです。
neverMind9
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.