Linuxのファイルのすべてのタイムスタンプをチェックするコマンドはありますか?
ファイルの最終更新日、作成日、変更日を確認しようとしています。
このコマンドは、 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
フォーマットを調整したい場合は、manページを参照してください。出力はOS固有であり、Linux/Unixでは異なります。
通常は、通常のディレクトリ一覧からも時間を取得できます。
ls -l
の出力は、mtime
です。ls -lc
は、ファイルステータス変更の最後の時間、ctime
を出力します( 違いは何ですか? )ls -lu
は最後のアクセス時刻、atime
を出力します(ただし、この概念の有用性は の議論の対象となります )。そしてもちろん、ctime
はファイルが "作成"された日時を記録しません。 POSIX仕様では3つのタイムスタンプしか定義されていませんが、 一部のLinuxファイルシステム にはBirth Time/Creation Timeが格納されます。 ファイルの作成日を知るにはどうすればいいですか? そのようなサポートされている設定では、1つを使うことができます。
stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'
POSIX Standard: http://pubs.opengroup.org/で定義されているように、各ファイルにはTHREE個の別個のtimes値のみが格納されています。 onlinepubs/9699919799 / (基本定義section - > 4.一般概念 - > 4.8 File Times Updateを参照)
各ファイルには、最後のdataアクセスの時刻、最後のdataの変更時刻、およびfileのステータスが最後に変更された時刻の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.
次の例は、atime、mtime、およびctime)の違いを示しています。これらの例はGNU/Linux BASHにあります。stat -x
を使用できます。同様の出力フォーマットを見るには、Mac OS Xや他のBSDのディストリビューションで。
$ 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つのタイムスタンプは同じです。
まず、ファイルのデータを読み込む(less
またはvim
)、印刷する(cat
)、または別のファイルにコピーする(cp
)ことによって、ファイルのデータにaccessしましょう。
$ 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
それでは、パーミッションを変更する(chmod
)か、名前を変更する(mv
)ことで、ファイルの状態をchangeしましょう。
$ 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)はまだ作成時と同じです。
最後に、ファイルを編集してファイルの内容をmodifyしましょう。
$ 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!
また、新しいバージョンのstat
(例えば、Ubuntu 12.04のstat --version 8.13
)には、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: -