私が知っているのは、ディレクトリの下のファイルとサブディレクトリを別々に並べ替えるだけですls -t
。ls -f
- ファイルのタイムスタンプ、修正時間、作成時間の違いは何ですか?
- コマンドでこの情報をどのように取得して変更できますか?
- 人々は、どのような根拠であるファイルが他のファイルよりも「最新」であると言いますか?
- どの情報が変更されてもファイルは変更されませんか?
例えば、私は誰かが次のように書いているのを見ました。
デフォルトでは、rsyncプログラムはファイルのサイズとタイムスタンプが異なることを確認するだけです。どのファイルが最新であるかは関係ありません。ファイルが異なる場合は上書きされます。 "--update"フラグをrsyncに渡すことができます。これにより、ターゲットのファイルがソースのファイルよりも最新の場合はスキップされます。ただし、ファイルタイプが同じ場合にのみ可能です。これは、たとえば、ソースファイルが通常のファイルで、ターゲットファイルがシンボリックリンクの場合、タイムスタンプに関係なくターゲットファイルを上書きすることを意味します。
しかし、ここでファイル形式は、pdf、jpg、htm、txtなどではなく、通常のファイルとsimlinkのみを参照しますか?
答え1
「タイムスタンプ」には3種類あります。
- access - ファイルが最後に読み込まれた時刻
- 修正 - ファイルが最後に変更された時間(コンテンツが修正された)
- 変更済み - ファイルのメタデータが最後に変更された日付(権限など)
この情報を表示するには、次のものを使用できます。stat
これはcoreutilsの一部です。
stat
また、デバイス、inode、リンクなどの追加情報も表示されます。
この情報は、ファイルシステムとインストールオプションによって大きく異なります。たとえば、noatime
このオプションを使用してパーティションをマウントすると、アクセス情報は記録されません。
タイムスタンプを変更するユーティリティはですtouch
。変更されるタイムスタンプを決定し(例えば、アクセス時間は-a、変更時間は-m)、指定された新しいタイムスタンプの構文解析に影響を与えるパラメーターがあります。バラよりman touch
詳細については。
touch
そしてcp -u
(「コピー元ファイルがコピー先ファイルよりも最新の場合、またはコピー先ファイルが見つからない場合にのみコピーしてください。」)または空のマークアップファイルを作成するために使用されます。
答え2
echoxの答えは有効ですが、ファイルの作成時間に関する情報を追加したいと思います。
ファイルシステムのサポート
一部のファイルシステムは、生成時間(または生成時間)に関してinodeに追加のエントリをサポートしています。わかりました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から情報を得ることができます(crtime、なぜなら私はext4ファイルシステムを使用しているからです)。
統計的サポート
あるカーネル4.11以降、新しいstatxシステムコール、より良いサポートに加えて2038年btime
または、出生時間(作成時間)アクセスなど、いくつかの追加機能も提供するネットワークファイルシステムです。 ext4のサポートは、同じカーネルバージョン4.11になければなりません。
その後、カーネルバージョンでこの新しいシステムコールをサポートするためのパッチが追加されました(例:カーネル4.13のBTRFSとF2FS、4.14のSMB3、4.15のGFS2、4.16のNFSなど)。
システムコールがラップされます。GNU Cライブラリ2.28以降。