ご存知かもしれませんが、ファイルの「アクセス時間」と「変更時間」のタイムスタンプは、ファイルが編集または変更された後、現在の時間に変更されます。ファイルを編集または変更した後でも、何らかの理由で古いタイムスタンプを保持したい場合があります。この簡単なガイドでは、Linuxでタイムスタンプを変更せずにファイルを編集する方法について説明します。
Linuxファイルのタイムスタンプについてよく知らない場合は、次のガイドを参照してください。
- 例で説明されているLinuxファイルのタイムスタンプ
Linuxでタイムスタンプを変更せずにファイルを編集する
ファイルのタイムスタンプは、touch
を使用して更新できます 指図。タイムスタンプは、ファイルにコンテンツを手動で追加したり、ファイルからデータを削除したりするときにも更新されます。タイムスタンプを変更せずにファイルの内容を変更したい場合、それを直接行う方法はありません。しかし、それは可能です!
touch
の1つを使用できます コマンドのオプション-r
(参照)ファイルを編集または変更した後、ファイルのタイムスタンプを保持します。 -r
オプションは、あるファイルのタイムスタンプを別のファイルのタイムスタンプ値に設定するために使用されます。
ostechnix.txt
という名前のテキストファイルがあります 。このファイルのタイムスタンプをstat
で見てみましょう。 コマンド:
$ stat ostechnix.txt
File: ostechnix.txt
Size: 38 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 4351679 Links: 1
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:47:55.992788870 +0530
Birth: -
すでに述べたように、このファイルの内容またはメタデータを変更すると、タイムスタンプも変更されます。
次に、ostechnix.timestamp
などの新しい空のファイルを作成します。 、ostechnix.txt
と同じタイムスタンプ touch
を使用したファイル コマンド:
$ touch -r ostechnix.txt ostechnix.timestamp
新しいファイルのタイムスタンプを確認します:
$ stat ostechnix.timestamp
File: ostechnix.timestamp
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 4328645 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:48:48.934235300 +0530
Birth: -

見る?両方のファイルのatime およびmtime タイムスタンプは同じです!
次に、メインファイル(ostechnix.txt
)に変更を加えます。 。ご想像のとおり、メインファイルのタイムスタンプは変更されます。
最後に、新しいファイルのタイムスタンプをコピーします。つまり、ostechnix.timestamp
メインファイルへ:
$ touch -r ostechnix.timestamp ostechnix.txt
これで、メインファイルには編集/変更される前の古いタイムスタンプがあります。
変更時刻(ctime)のタイムスタンプは保持できないことに注意してください。常に現在の時刻に更新されます。
TL; DR
touch
を使用して、メインファイルと同じタイムスタンプで新しいファイルを作成します コマンドを実行し、メインファイルで変更を行い、-r
を使用して新しいファイルのタイムスタンプをメインファイルに設定します。 オプション。
これがお役に立てば幸いです。