GNU/Linux >> Linux の 問題 >  >> Linux

5 Linux Touch コマンドの例 (ファイルのタイムスタンプを変更する方法)

Linux のすべてのファイルは、最終アクセス時刻、最終変更時刻、および最終変更時刻を指定するタイムスタンプに関連付けられています。

新しいファイルを作成するか、既存のファイルまたはその属性を変更するたびに、これらのタイムスタンプは自動的に更新されます。

これらのタイムスタンプ (ファイルのアクセス時間、変更時間、および変更時間) を変更するには、タッチ コマンドを使用します。

1. touch を使用して空のファイルを作成する

touch コマンドを使用して空のファイルを作成できます。次の例では、tgs.txt という名前のゼロ バイトの新しいファイルを作成します。

$ touch tgs.txt

-c オプションを使用して、新しいファイルの作成を回避することもできます。 -c オプションを使用し、ファイルが存在しない場合、touch はファイルを作成しません。

$ touch -c a.txt

ls コマンドや find コマンドなどのコマンドは、これらのタイムスタンプ情報を使用して、ファイルの一覧表示と検索を行います。

1 つの touch コマンドから複数のファイルを作成することもできます。次の例では、a、b、c、および d という名前の 4 つのファイルを作成します。

$ touch a b c d

2. -a を使用してファイルのアクセス時間を変更する

-a オプションを使用して、ファイルのアクセス時間を変更できます。デフォルトでは、現在のシステム時刻を取得し、atime フィールドを更新します。

タッチコマンド実行前:

$ stat tgs.txt

  File: `tgs.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2012-10-18 23:58:21.663514407 +0530
Modify: 2012-10-18 23:58:21.663514407 +0530
Change: 2012-10-18 23:58:21.663514407 +0530
$ touch -a tgs.txt

上記のタッチコマンドの後 (アクセス時間は変更されることに注意してください):

$ stat tgs.txt

  File: `tgs.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2012-10-19 00:08:23.559514525 +0530
Modify: 2012-10-18 23:58:21.663514407 +0530
Change: 2012-10-19 00:08:23.559514525 +0530

3. -m を使用してファイルの変更時刻を変更する

-m オプションを使用して、ファイルの変更時刻を変更できます。

$ touch -m *.o

上記の方法は、make ユーティリティを使用する場合、すべての obj ファイルの mtime を変更するために使用できます。

注:touch コマンドを使用して ctime を変更することはできません

4. -t と -d を使用して明示的にアクセス時間と変更時間を設定する

現在のタイムスタンプを取得する代わりに、-t および -d オプションを使用して時刻を明示的に指定できます。

-t の指定形式は [[CC]YY]MMDDhhmm[.SS]

です。
$ touch -t [[CC]YY]MMDDhhmm[.SS]

次に、上記の形式について説明します。

  • CC – 年の上 2 桁を指定します
  • YY – 年の下 2 桁を指定します。 YY の値が 70 ~ 99 の場合、CC 桁の値は 19 と見なされます。YY の値が 00 ~ 37 の場合、CC 桁の値は 20 と見なされます。 2038 年 1 月 18 日を超える日付を設定することはできません。
  • MM – 月を指定します
  • DD – 日付を指定します
  • hh – 時間を指定します
  • mm – 分を指定します
  • SS – 秒を指定します

例:

$ touch -a -m -t 203801181205.09 tgs.txt

stat コマンドを使用して上記の変更を確認します:

$ stat tgs.txt
  File: `tgs.txt'
  Size: 3         	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 394283      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/lakshmanan)   Gid: ( 1000/lakshmanan)
Access: 2038-01-18 12:05:09.000000000 +0530
Modify: 2038-01-18 12:05:09.000000000 +0530
Change: 2012-10-19 00:40:58.763514502 +0530

文字列を使用して時刻を変更することもできます

別の例:

$ touch -d "2012-10-19 12:12:12.000000000 +0530" tgs.txt

開発者にとっては、Makefile を扱うときに touch コマンドが非常に役立ちます

5. -r を使用して別のファイルからタイムスタンプをコピーする

ファイルを参照として取得し、他のファイルの時間を更新して、両方のファイルが同じ時間を保持するようにすることもできます。

次の touch コマンドの例は、ファイル a.txt のタイムスタンプを tgs.txt ファイルのタイムスタンプで更新します。

$ touch a.txt -r tgs.txt

Linux
  1. Linuxテールコマンドの例

  2. Linux での ln コマンドの例

  3. Linux での file コマンドの例

  1. LinuxTouchコマンドの使用方法+例

  2. Linuxでのmvコマンド:7つの重要な例

  3. Linux での touch コマンドの例

  1. Linuxでtouchコマンドを使用する方法

  2. Linuxでの8つのヘッドコマンドの例

  3. Linux での chown コマンドの例