3 種類の「タイムスタンプ」があります:
- アクセス - ファイルが最後に読み取られた時間
- 変更 - ファイルが最後に変更された時刻 (コンテンツが変更された)
- 変更 - ファイルのメタデータが最後に変更された時刻 (権限など)
この情報を表示するには、stat
を使用できます。 これは coreutils の一部です。
stat
デバイス、inode、リンクなどの詳細情報も表示されます。
この種の情報は、ファイルシステムとマウント オプションに大きく依存することに注意してください。たとえば、noatime
でパーティションをマウントする場合 オプションでは、アクセス情報は書き込まれません。
タイムスタンプを変更するユーティリティは touch
です .どのタイムスタンプを変更するかを決定するための引数がいくつかあります (例:-a はアクセス時間、-m は変更時間)。新しい指定されたタイムスタンプの解析に影響を与えます。man touch
を参照してください。 詳細については
touch
cp -u
と組み合わせると便利です (「SOURCE ファイルが宛先ファイルよりも新しい場合、または宛先ファイルが見つからない場合にのみコピーする」 ) または空のマーカー ファイルの作成用。
echox の回答は有効ですが、ファイルの作成時間に関する情報を追加したいと思います。
ファイル システムのサポート
一部のファイル システムでは、作成時間 (または発生時間) に関する i ノードの追加エントリがサポートされています。 ext4 がこの機能をサポートし、JFS と BTRFS もサポートしていることを知っています。
ただし、ほとんどのツールと API は、この追加情報を読み取るように更新されていません。そのため、たとえそこにある可能性があっても、アクセスすることはできません.
たとえば、Ubuntu 12.04 LTS では、今日作成したファイルに対して次のようになります:
$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012
mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012
[...]
出力が正しくないように見えますが、新しい stat 関数には生年月日フィールドがあることがわかります。また、debugfs を介して情報を取得できます (ext4 ファイル システムを使用しているため、crtime)。
statx のサポート
Kernel 4.11 以降、新しい statx システム コールがあり、Y2038 またはネットワーク ファイル システムのサポートの向上に加えて、btime
のようないくつかの追加機能ももたらします。 または出生時間 (作成時間) アクセス。 ext4 のサポートは、同じカーネル リリース 4.11 で行う必要があります。
以降のカーネル リリースでは、この新しい syscall のサポートを追加するためのパッチがあります。カーネル 4.13 の BTRFS と F2FS、4.14 の SMB3、4.15 の GFS2、4.16 の NFS など
今後の glibc は、このインターフェースを照会するための関数呼び出しを提供します (glibc statx サポートに関する Phoronix ニュースを参照してください)。したがって、ユーザー空間でのこの機能のサポートはすぐに期待できます。