Linuxコマンド一覧

touchコマンド|空のファイルを作る・更新日時を変える

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
touch を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

touch は空のファイルを作るコマンドです。既にあるファイルに打つと更新日時だけが変わります。2つの顔の使い分けを、ブラウザ上のターミナルでそのまま打ちながら確認できます。

最終更新: 2026-09-04

書式

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

名前を空白で区切って並べると、まとめて作れます。

まず打ってみる

このページのターミナルには README.mdlogs/ があります。

$ ls
logs/  README.md

$ touch NOTES.md
$ ls
logs/  NOTES.md  README.md

NOTES.md が空のファイルとして作られました。 touch は成功しても何も表示しません。

2つの顔がある

touch は、相手が存在するかどうかで役割が変わります。

相手何が起きるか
存在しないファイル空のファイルを作る
既にあるファイル更新日時を今にする。中身はそのまま
$ touch README.md

README.md は既にあるので、新しく作られるのではなく更新日時だけが変わります。 中身は消えません。ここが > README.md との決定的な違いです。

よく使うオプション

オプション意味
-cファイルが無くても作らない。更新日時を変えるだけに徹する
$ touch -c MISSING.md
$ ls
logs/  NOTES.md  README.md

MISSING.md は作られていません。

実務での使いどころ

場面打つもの
空のファイルを用意するtouch .gitkeep
設定ファイルの置き場だけ先に作るtouch config.yml
ビルドをやり直させるtouch src/index.js(更新日時で判断する仕組みに効く)
存在するときだけ日時を更新touch -c ファイル名

touch で更新日時を変えると、make のように「更新日時を見て作り直すか決める」仕組みを動かせます。 中身を1文字も変えずにビルドをやり直させたいときの定番です。

つまずきやすいところ

中身は消えません。 既にあるファイルに touch を打っても、消えるのは何もありません。 中身を空にしたいときは > ファイル名 を使います。この2つを取り違えると、消したくないものを消します。

親ディレクトリが無いと作れません。

$ touch a/b.txt
touch: cannot touch 'a/b.txt': No such file or directory

a が存在しないためです。先に mkdir -p a を打ってください。

ディレクトリは作れません。 touch が作るのはファイルだけです。ディレクトリは mkdir を使います。

手を動かして覚える

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

mkdir / ls / stat

よくある質問

touch は何をするコマンドですか?
ファイルが無ければ空のファイルを作り、あれば更新日時を今にします。名前が「触る」なのは、後者が本来の役割だからです。
既にあるファイルに touch を打つと中身は消えますか?
消えません。更新日時だけが変わり、中身はそのまま残ります。中身を消したいときは > ファイル名 のようにリダイレクトを使います。
ファイルを作りたくないときは?
-c を付けると、存在しないファイルは作らずに何もしません。更新日時だけを変えたいときに使います。
複数のファイルを一度に作れますか?
作れます。touch a.txt b.txt c.txt のように空白で区切って並べます。
ディレクトリは作れますか?
作れません。ディレクトリを作るのは mkdir です。touch が作るのはファイルだけです。