こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxのtouchコマンドの使い方について解説します。
touchは、ファイルのタイムスタンプを変更するためのコマンドです。ただ、指定したファイルが存在しない場合は空のファイルが作成されるため、Linuxを勉強し始めたばかりのころは「空ファイルを作るコマンド」として使うことも多いと思います。
この記事では、まず基本的な使い方を確認し、そのあとにアクセス時刻や更新時刻の変更、よく使うオプションまで順番に見ていきます。
Linuxのtouchコマンドとは?¶
touchコマンドは、ファイルのアクセス時刻や更新時刻を変更するためのコマンドです。
基本的な書き方は次のとおりです。
touch ファイル名
例えば、test.txtというファイルがすでに存在する場合に、
touch test.txt
と実行すると、ファイルの中身は変更せず、アクセス時刻と更新時刻が現在の時刻に変更されます。
一方、test.txtが存在しない場合は、新しい空ファイルが作成されます。
そのため、初心者のうちは次の2つの動作を覚えておくと分かりやすいです。
- ファイルが存在する → タイムスタンプを更新する
- ファイルが存在しない → 空のファイルを作成する
「touch=ファイルを作るコマンド」と覚えている方も多いですが、本来はファイルのタイムスタンプを変更するコマンドです。
touchコマンドで空のファイルを作成する¶
まずは、Linuxの学習でもよく使う空ファイルの作成から見てみましょう。
次のコマンドを実行します。
touch test.txt
何もエラーが表示されなければ、カレントディレクトリにtest.txtが作成されています。
lsコマンドで確認してみましょう。
ls
また、ファイルの詳しい情報を確認したい場合はls -lを使います。
ls -l test.txt
touchで作ったファイルには中身がありません。
例えば、次のコマンドで確認しても何も表示されません。
cat test.txt
このように「とりあえず空のファイルを用意したい」という場面でtouchはよく使います。
別のディレクトリにファイルを作成する¶
ファイル名だけを指定した場合は、現在いるディレクトリにファイルが作成されます。
touch test.txt
別のディレクトリへ作成したい場合は、パスを指定します。
例えば、/tmpディレクトリにtest.txtを作成する場合は次のとおりです。
touch /tmp/test.txt
相対パスを使うこともできます。
例えば、現在のディレクトリにworkというディレクトリがある場合は、
touch work/test.txt
と指定できます。
ただし、ファイルを作成するには、そのディレクトリへ書き込む権限が必要です。
例えば/etcなどのシステム用ディレクトリでは、一般ユーザーのままではファイルを作成できないことがあります。
Permission denied
このエラーが出た場合は、すぐにsudoを付けるのではなく、「そのディレクトリに本当にファイルを作成する必要があるのか」「現在のユーザーに書き込み権限があるのか」を確認しましょう。
touchコマンドで複数のファイルをまとめて作成する¶
touchでは、複数のファイルをまとめて指定できます。
例えば、file1.txt、file2.txt、file3.txtを作る場合は次のように実行します。
touch file1.txt file2.txt file3.txt
作成されたか確認してみましょう。
ls
次のように表示されれば作成できています。
file1.txt file2.txt file3.txt
テスト用のファイルを何個か用意したい場合などに便利です。
連番のファイルをまとめて作成する¶
Bashなどのシェルでは、波括弧を使って連番を展開できます。
例えば、file1.txtからfile10.txtまでをまとめて作る場合は次のように実行します。
touch file{1..10}.txt
実際にはtouchコマンド自身が{1..10}を処理しているわけではありません。
シェルが、
file1.txt file2.txt file3.txt ... file10.txt
のように展開してから、その結果をtouchへ渡しています。
アルファベットも展開できます。
touch file{a..e}.txt
この場合は、次のファイルが作成されます。
filea.txt
fileb.txt
filec.txt
filed.txt
filee.txt
Linuxでは、コマンドそのものの機能と、Bashなどのシェルが持っている機能が組み合わさって動いていることがあります。
最初は「こう書けばまとめて作れる」と覚えておけば十分ですが、慣れてきたらこの違いも知っておくと理解が深まります。
touchコマンドで変更されるタイムスタンプとは?¶
ここからがtouchコマンド本来の使い方です。
Linuxのファイルには、いくつかの時刻情報があります。
その中でもtouchで主に変更するのが、次の2つです。
| 種類 | 意味 |
|---|---|
| atime | ファイルへ最後にアクセスした時刻 |
| mtime | ファイルの内容を最後に変更した時刻 |
touchをオプションなしで実行すると、基本的にこの2つを現在時刻へ変更します。
なお、Linuxではファイルシステムによって作成時刻(birth time)を持つ場合もありますが、通常のtouchコマンドで変更する対象ではありません。
ファイルのタイムスタンプを詳しく確認したい場合は、statコマンドを使うと分かりやすいです。
stat test.txt
環境によって表示内容は異なりますが、アクセス時刻や更新時刻などを確認できます。
-aオプションでアクセス時刻だけを変更する¶
アクセス時刻だけを変更したい場合は、-aオプションを利用します。
touch -a test.txt
-aはaccessと覚えると分かりやすいです。
この場合、mtimeは変更せず、atimeだけを更新します。
変更前後を確認したい場合は、statと組み合わせてみましょう。
stat test.txt
touch -a test.txt
stat test.txt
実際に自分で実行して比較すると、どの時刻が変わったのか理解しやすくなります。
-mオプションで更新時刻だけを変更する¶
ファイルの更新時刻だけを変更したい場合は、-mオプションを利用します。
touch -m test.txt
-mはmodificationと覚えるとよいでしょう。
この場合はmtimeだけが変更され、atimeは変更されません。
stat test.txt
touch -m test.txt
stat test.txt
-aと-mはセットで覚えておくと分かりやすいです。
-tオプションで時刻を指定する¶
touchは現在時刻へ変更するだけではなく、指定した日時へ変更することもできます。
その場合は-tオプションを使います。
touch -t 202601011200 test.txt
この例では、test.txtのアクセス時刻と更新時刻を2026年1月1日12時00分に変更します。
-tでは、基本的に次の形式で日時を指定します。
[[CC]YY]MMDDhhmm[.ss]
例えば、
touch -t 202608311430 test.txt
と実行すると、2026年8月31日14時30分に設定できます。
元の記事では「作成時刻を変更する」と説明していましたが、-tで変更するのは作成時刻ではありません。
オプションを組み合わせていない場合は、アクセス時刻と更新時刻が指定した日時へ変更されます。
-dオプションなら日時を読みやすく指定できる¶
-tは便利ですが、数字が並ぶので少し読みにくいですよね。
GNU/Linuxでよく利用されるtouchでは、-dオプションを使って、もう少し分かりやすい形式で日時を指定できます。
touch -d "2026-08-31 14:30:00" test.txt
この書き方であれば、いつの日時を指定しているのか分かりやすくなります。
-tと-dはどちらも日時を指定できますが、Linuxを操作するときは目的や読みやすさに応じて使い分けてください。
-cオプションでファイルを新規作成しない¶
ここまで説明したとおり、touchは指定したファイルが存在しなければ新しく空ファイルを作成します。
「タイムスタンプだけ変更したいので、存在しないファイルは作りたくない」という場合は-cオプションを利用します。
touch -c test.txt
test.txtが存在していればタイムスタンプを変更します。
一方、存在しない場合でも新しいファイルは作成されません。
シェルスクリプトなどでtouchを利用するときに覚えておくと便利です。
-rオプションで別のファイルと同じ時刻にする¶
別のファイルと同じタイムスタンプにしたい場合は、-rオプションを利用できます。
例えば、file1.txtと同じタイムスタンプをfile2.txtへ設定する場合は次のように実行します。
touch -r file1.txt file2.txt
file1.txtを基準にして、file2.txtのアクセス時刻と更新時刻が変更されます。
実行後にstatで確認してみましょう。
stat file1.txt
stat file2.txt
普段のLinux操作では頻繁に使うオプションではありませんが、「別ファイルのタイムスタンプをそのまま使える」と覚えておくとよいでしょう。
touchコマンドの主なオプション一覧¶
ここまで紹介したオプションをまとめます。
| オプション | 内容 |
|---|---|
-a |
アクセス時刻だけを変更する |
-m |
更新時刻だけを変更する |
-t |
指定した日時を使用する |
-d |
文字列で日時を指定する |
-c |
ファイルが存在しない場合に新規作成しない |
-r |
指定した別ファイルの時刻を利用する |
すべてを一度に暗記する必要はありません。
まずは、
touch test.txt
で空ファイルを作れること、その後にtouch本来の役割であるタイムスタンプの変更を覚えていけば十分です。
touchコマンドは実際に入力して覚えよう¶
Linuxコマンドは、説明を読むだけよりも実際に入力した方が覚えやすいです。
まずは次のようにファイルを作ってみましょう。
touch test.txt
ls -l test.txt
stat test.txt
次に少し時間を空けて、
touch test.txt
stat test.txt
と実行してみてください。
ファイルの中身を変更していないのに、タイムスタンプが変わっていることを確認できます。
さらに、
touch -a test.txt
touch -m test.txt
も試してみると、touchの役割がかなり分かりやすくなります。
Linuxは、コマンドを暗記するより「実際に入力すると何が変わるのか」を確認しながら覚えるのがおすすめです。
InfraAcademyのLinux講座では、ブラウザ上のLinux環境を使って、touchやls、cp、mv、chmodなどのコマンドを実際に入力しながら学べます。
「Linuxを勉強したいけど、自分で環境を用意するところから難しい」という方は、手を動かしながら学習してみてください。
↓InfraAcademyの講座の一部です。
まとめ¶
今回の記事では、Linuxのtouchコマンドについて解説しました。
touchは「空ファイルを作成するコマンド」として使われることも多いですが、本来はファイルのアクセス時刻や更新時刻を変更するコマンドです。指定したファイルが存在しない場合に、空のファイルが作成されます。
まずは次の使い方を覚えておきましょう。
touch test.txt
touch -a test.txt
touch -m test.txt
touch -t 202608311430 test.txt
また、statコマンドと一緒に使うと、どのタイムスタンプが変更されたのかを確認できます。
Linuxコマンドは、1つずつ意味を暗記するだけではなかなか身につきません。自分でコマンドを実行して、結果がどう変わるのかを確認しながら覚えていきましょう。




