Linuxを使っていると「空のファイルを作りたい」と思う場面は意外と多くあります。そんなときに活躍するのがtouch
コマンドです。
このコマンドは、単にファイルを作るだけでなく、ファイルのタイムスタンプを変更したり、複数ファイルを一括で扱ったりと、知っておくと非常に便利な機能が備わっています。
本記事では、touch
コマンドの基本的な使い方から、実務で役立つ応用例までをわかりやすく解説します。Linuxをこれから使い始める初心者の方にも理解しやすいように、丁寧に説明していきます。
touchコマンドとは?
touch
コマンドは、LinuxやUNIX系のシステムで使われるコマンドの1つで、主に以下の目的で使われます。
- 空のファイルを作成する
- 既存ファイルのタイムスタンプ(最終更新日時)を変更する
- 存在しないファイルを一括で作成する
このコマンドは、簡単に新しいファイルを作成したいときや、スクリプトで自動的にファイルを用意したいときに重宝します。
空のファイルを作成する基本的な使い方
もっとも基本的な使い方は、次のようにファイル名を指定するだけです。
touch filename.txt
このコマンドを実行すると、カレントディレクトリに「filename.txt」という空のファイルが作成されます。
すでに同じ名前のファイルが存在する場合は、ファイルの中身は変更されず、「最終更新日時」だけが現在の時刻に更新されます。
複数のファイルを一度に作成する
touch
コマンドは、一度に複数のファイルを作成することもできます。たとえば、以下のように使います。
touch file1.txt file2.txt file3.txt
このように記述するだけで、3つのファイルが同時に作成されます。手作業で一つ一つ作るより効率的なので、開発現場やスクリプト作成時に便利です。
ファイルのタイムスタンプを更新する
すでに存在するファイルの「最終更新日時」だけを変更したい場合にも、touch
コマンドは使えます。
touch existing_file.txt
このコマンドはファイルの中身を変えずに、更新日時を現在の時刻に変更します。
ログのローテーションや、ビルドのトリガーとしてタイムスタンプが必要な場面などで役立ちます。
特定の日時にタイムスタンプを設定する
任意の日時にタイムスタンプを設定するには、-t
オプションを使います。
touch -t 202503301200 file.txt
この例では、「file.txt」のタイムスタンプが「2025年3月30日12時00分」に設定されます。
日時の指定形式は以下の通りです。
[[CC]YY]MMDDhhmm[.ss]
例:
- 202503301200 → 2025年3月30日12時00分
- 2401010000 → 2024年1月1日00時00分
ファイルが存在しない場合に作成しない方法
デフォルトでは、touch
は指定したファイルが存在しない場合に自動的に新規作成します。
しかし、ファイルが存在する場合にだけタイムスタンプを更新したい、というときは-c
オプションを使います。
touch -c file.txt
この場合、「file.txt」が存在すればタイムスタンプを更新し、存在しなければ何も起こりません。
ディレクトリに対して使うとどうなる?
touch
コマンドは基本的に「ファイル」に対して使いますが、ディレクトリを指定するとどうなるのでしょうか?
答えは、ディレクトリが存在すればタイムスタンプを更新し、存在しなければ何も起こりません(エラーにもなりません)。ただし通常、ファイル操作の対象として使うのが一般的です。
touch my_directory
このような使い方はあまりされませんが、スクリプトの中で条件分岐のトリガーとして用いるケースはあります。
touchコマンドの実用例
1. スクリプトで毎日ログファイルを用意する
#!/bin/bash
today=$(date +%Y-%m-%d)
touch "/var/log/myapp/${today}.log"
このようにしておくと、毎日「2025-03-30.log」のようなログファイルを自動で用意できます。
2. 空のファイルを複数作成して初期設定
touch index.html style.css script.js
HTMLのプロジェクトを始めるときに、必要なファイルをさっと作っておけるので便利です。
3. 存在確認を兼ねたタイムスタンプ操作
ファイルの有無を確認しながら、あれば更新、なければ無視という処理は以下のように書けます。
[ -e target.txt ] && touch target.txt
このようにtouch
はスクリプトと組み合わせると非常に便利です。
よくあるエラーと対処法
パーミッションの問題
書き込み権限がないディレクトリでtouch
を使うと、次のようなエラーが出ることがあります。
touch: cannot touch 'file.txt': Permission denied
この場合は、sudo
を使うか、権限を確認してみましょう。
sudo touch file.txt
ファイル名のタイプミス
間違ったファイル名やスペース入りの名前などで想定外のファイルができてしまうことがあります。
スペースを含むファイル名を作りたいときは、必ずクォートで囲いましょう。
bashコピーする編集するtouch "my file.txt"
まとめ
touch
コマンドは、シンプルながら非常に汎用性が高いLinuxコマンドです。
空のファイルを作成するだけでなく、タイムスタンプの管理や、スクリプトとの連携など、さまざまな場面で活用できます。
初心者の方も、このコマンドをマスターすれば、Linux操作がグッと便利になるでしょう。
まずは試しにいくつかファイルを作成して、動きを確認してみてください。使いこなすことで、日々の作業効率が格段にアップするはずです。