Linuxコマンドtouchの使い方と6つのオプション

Linuxコマンドtouchを使用すると、ファイルのアクセス時間および修正時間を変更したり、空のファイルを作成したりできます。この投稿では、touchコマンドの基本的な使用方法とさまざまなオプションを紹介し、便利な活用方法も併せて紹介します。

Linuxコマンドtouchとは?

touchコマンドは主に2つの目的で使用されます。第一に、新しい空のファイルを作成する用途です。第二に、既存ファイルのアクセス時間(access time)と修正時間(modification time)を変更する用途です。これらの機能はシステム管理やスクリプト作成時に非常に便利です。

基本使用法

touchコマンドの最も基本的な使用方法は、以下のようにtouchコマンドの後にオプションとファイル名を記述します。

touch [オプション] ファイル名
ShellScript

上記のコマンドは、ファイル名が存在する場合、そのファイルのアクセス時間と修正時間を現在の時間に変更します。ファイル名が存在しない場合、空のファイルを新しく作成します。

以下は、空のファイルnew_file.txtを作成した結果です。

図1. Linuxコマンドtouch: 新しい空のファイルを作成
図1. Linuxコマンドtouch: 新しい空のファイルを作成

次に、既存のfile.txtファイルのアクセス時間と修正時間を確認し、現在の時間に更新して確認しました。

図2. Linuxコマンドtouch: 既存ファイルのアクセス時間と修正時間を現在の時間に更新
図2. Linuxコマンドtouch: 既存ファイルのアクセス時間と修正時間を現在の時間に更新

主要オプション

touchコマンドにはさまざまなオプションがあり、それらを使用してファイルの時間情報をより細かく操作できます。主要オプションを1つずつ見ていきましょう。

-a (access: アクセス時間のみ変更)

ファイルのアクセス時間のみを変更し、修正時間をそのままにしておく場合は、-aオプションを使用します。

touch -a ファイル名
ShellScript

-aオプションを使用すると、修正時間(Modify)には変化がなく、アクセス時間(Access)が変更されたことが確認できます。

図3. Linuxコマンドtouch: 既存ファイルのアクセス時間のみ更新
図3. Linuxコマンドtouch: 既存ファイルのアクセス時間のみ更新

-m (modify: 修正時間のみ変更)

-aオプションとは逆に、-mオプションはアクセス時間をそのままにして修正時間のみを変更する場合に使用します。

touch -m ファイル名
ShellScript

以下の図を見ると、アクセス時間(Access)はそのままで、修正時間(Modify)が変更されたことが確認できます。

図4. Linuxコマンドtouch: 既存ファイルの修正時間のみ更新
図4. Linuxコマンドtouch: 既存ファイルの修正時間のみ更新

-c (do not create: ファイルがない場合に作成しない)

-cオプションは、ファイルが存在しない場合にはファイルを作成しないようにします。一方で、ファイルが存在する場合はtouchコマンドの基本機能と同様にそのファイルのアクセス時間と修正時間を更新します。

touch -c ファイル名
ShellScript

-d (date: 特定の日付に設定)

-dオプションを使用すると、指定した日付でアクセス時間と修正時間を更新できます。

touch -d [YY]YYMMDD ファイル名
ShellScript

年月日の6桁または8桁の表記を使用して、指定した日付にファイルのアクセス時間と修正時間を更新できます。

図5. Linuxコマンドtouch: ファイルの日付を更新
図5. Linuxコマンドtouch: ファイルの日付を更新

-dオプションは日付のみを設定するオプションであるため、時、分、秒はすべて0値で処理されます。

次に、時、分、秒まで指定して特定の時間に設定したい場合に使用する-tオプションについて見ていきましょう。

-t (time: 特定の時間に設定)

-tオプションを使用すると、指定した時間にアクセス時間と修正時間を設定できます。時間形式は[[CC]YY]MMDDhhmm[.ss]です。ここでCCは世紀を、YYは年を、MMは月、DDは日、hhは時間、mmは分、ssは秒を意味します。角括弧で囲まれた部分は省略可能です。YYを省略する場合、現在の年に設定され、ssを省略する場合は秒の値が0に処理されます。

touch -t [[CC]YY]MMDDhhmm[.ss] ファイル名
ShellScript

-tオプションを使用して、file.txtの時間を2023年7月30日午後3時45分に設定してみましょう。アクセス時間と修正時間が希望する時間に変更されたことが確認できます。

図6. Linuxコマンドtouch: ファイルの時間を更新
図6. Linuxコマンドtouch: ファイルの時間を更新

-r (reference: 他のファイルの時間情報をコピー)

-rオプションを利用すると、他のファイルの時間情報をコピーして対象ファイルに同じように設定できます。

touch -r 参照ファイル 対象ファイル
ShellScript

以下の場合を見ると、target.txtのアクセス時間と修正時間がfile.txtの時間に設定されたことが確認できます。ファイルの生成(birth)時間や変更(change)時間には影響を与えないことがわかります。

図7. Linuxコマンドtouch: ファイルの時間を参照して更新
図7. Linuxコマンドtouch: ファイルの時間を参照して更新

追加活用ヒント: ワイルドカード

複数ファイルの時間を一括で変更する必要がある場合、touchコマンドとワイルドカード(*)を一緒に使用すると便利です。

以下のコマンドは、現在のディレクトリ内のすべてのファイルのアクセス時間と修正時間を現在の時間に設定します。

touch *
ShellScript

注意事項

touchコマンドを使用する際にはいくつかの注意事項があります。

時間設定形式

-tオプションを使用する際には、時間形式を正確に入力する必要があります。形式が間違っていると、エラーが発生したり、予期しない時間が設定されたりする可能性があります。

権限問題

ファイルの時間情報を変更するには、そのファイルに対する適切な権限が必要です。権限がないファイルに対してtouchコマンドを実行すると、「touch: cannot touch ‘ファイル名’: Permission denied」というエラーメッセージが表示されます。

このような場合には、sudoコマンドを一緒に使用してtouchコマンドを実行することができます。

図8. Linuxコマンドtouch: 権限問題
図8. Linuxコマンドtouch: 権限問題

まとめ

Linuxコマンドtouchは、Linuxシステムで空のファイル作成および時間情報管理を簡単に行うことができる便利なツールです。基本的なファイル作成から細かい時間設定まで、さまざまなオプションを提供し、さまざまな状況で活用できます。これをうまく活用すると、システム管理やスクリプト作成時に大いに役立ちます。

この投稿を通じて、touchコマンドの基本使用法とさまざまなオプション、そして実用的な活用方法を理解し、役立ててください。

リファレンス

관련 포스트

コメントする