InfraAcademy

InfraAcademy Blog

【Linux】touchコマンドの使い方解説!新しい空のファイルを作成またはタイムスタンプを更新するコマンド

| #Linux
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、フルスタックエンジニアの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.txtfile2.txtfile3.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環境を使って、touchlscpmvchmodなどのコマンドを実際に入力しながら学べます。

「Linuxを勉強したいけど、自分で環境を用意するところから難しい」という方は、手を動かしながら学習してみてください。

InfraAcademyのLinux講座を見る

↓InfraAcademyの講座の一部です。

まとめ

今回の記事では、Linuxのtouchコマンドについて解説しました。

touchは「空ファイルを作成するコマンド」として使われることも多いですが、本来はファイルのアクセス時刻や更新時刻を変更するコマンドです。指定したファイルが存在しない場合に、空のファイルが作成されます。

まずは次の使い方を覚えておきましょう。

touch test.txt
touch -a test.txt
touch -m test.txt
touch -t 202608311430 test.txt

また、statコマンドと一緒に使うと、どのタイムスタンプが変更されたのかを確認できます。

Linuxコマンドは、1つずつ意味を暗記するだけではなかなか身につきません。自分でコマンドを実行して、結果がどう変わるのかを確認しながら覚えていきましょう。

関連:インフラ学習におすすめのサイトInfraAcademy(インフラアカデミー)

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る