touch を使用したファイルのタイムスタンプの操作
touch
コマンドを使用すると、ファイルを作成するだけでなく、そのタイムスタンプを更新することもできます。これはテストや、ファイル間のタイムスタンプを同期する必要がある場合に便利です。
すべてのタイムスタンプを更新する
すべてのタイムスタンプ(アクセス時刻、変更時刻、状態変更時刻)を現在時刻に更新するには、次のようにします。
touch testfile.txt
タイムスタンプを確認します。
stat testfile.txt
出力:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:45:10.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:45:10.000000000 +0000
Birth: -
アクセス時刻のみを更新する
アクセス時刻のみを更新するには、次のようにします。
touch -a testfile.txt
タイムスタンプを確認します。
stat testfile.txt
出力:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:46:15.000000000 +0000
Birth: -
ファイルのメタデータが変更されたため、状態変更時刻 (ctime) も更新されることに注意してください。
変更時刻のみを更新する
変更時刻のみを更新するには、次のようにします。
touch -m testfile.txt
タイムスタンプを確認します。
stat testfile.txt
出力:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:47:20.000000000 +0000
Change: 2023-05-15 14:47:20.000000000 +0000
Birth: -
再び、状態変更時刻も更新されます。
特定のタイムスタンプを設定する
touch
の -d
オプションを使用して、特定のタイムスタンプを設定することができます。
touch -d "2023-01-01 12:00:00" testfile.txt
タイムスタンプを確認します。
stat testfile.txt
出力:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:48:30.000000000 +0000
Birth: -
これにより、アクセス時刻と変更時刻の両方が 2023 年 1 月 1 日午後 12:00 に設定されます。状態変更時刻は依然として現在時刻に更新されます。
既存のファイルのタイムスタンプを使用して新しいファイルを作成する
-r
オプションを使用して、別のファイルのタイムスタンプを参照することもできます。
## Create a new file
touch newfile.txt
## Set its timestamps based on testfile.txt
touch -r testfile.txt newfile.txt
新しいファイルのタイムスタンプを確認します。
stat newfile.txt
出力:
File: newfile.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 2101100 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:49:45.000000000 +0000
Birth: -
これで、newfile.txt
のアクセス時刻と変更時刻は testfile.txt
のものと一致します。