【Linux】touchコマンドでタイムスタンプ更新&空ファイル作成

シェル/bash

linuxのtouchコマンドについて調べる人

Linuxのtouchコマンドについて調べる人
「linuxでtouchコマンドを使う方法が知りたい。touchコマンドを使って、空ファイルの作成やタイムスタンプの更新はどうやってやるのでしょう?また何のためにそのようなことをするのか、実務上での使い方の例についても教えて欲しいです。」

こんな悩みを解決します。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事で扱うのはLinux/Macのtouchコマンドです

本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。

touchコマンドには大きく2つの用途があります

主な用途

  • 用途1: 空ファイルを作成したい
  • 用途2: ファイルのタイムスタンプを更新したい

いずれの用途でも同じ構文です。使い方の違いは、用途1では未作成のファイル名を指定し、用途2では既に存在するファイル名を指定します。

本記事の内容

  • 【構文】touch 《ファイル名》
  • 【用途1】空ファイルを作成する
  • 【用途2】ファイルのタイムスタンプを更新する
  • 【応用編】常に空ファイルにして更新したい場合
  • 【応用編】運用業務上の注意点

【基本的な使い方】touch 《ファイル名》

touchコマンドを使うには、以下の構文を用います。

touch 《ファイル名》

【用途1】touchで空ファイルを作成する

以下の例では、touchコマンドを実行し、空ファイルを作成します。

  • ① lsコマンドで事前にファイルが存在しないことを確認
  • ② touchコマンドで空ファイルを作成
  • ③ 事後に0バイトの空ファイルが作成されたことを確認

実行結果は以下のようになります。

【用途1】実務での利用用途

エンジニアが実務でtouchコマンドにより空ファイルを作成する事例を挙げます。

  • 例1:業務処理中、処理完了などの状態を、空ファイルの有無で表す場合
  • 例2:ファイルにデータを書き込む前に、まずファイルを作っておきたい場合
  • 例3:テストなどの目的で、大量のダミーファイルを作成したい場合

【用途2】touchでファイルのタイムスタンプを更新する

既にあるファイルのタイムスタンプを更新します。元のタイムスタンプ(9:16)から現在時刻(9:27)にタイムスタンプが更新されています(★の箇所を参照)。

【用途2】実務での利用用途

エンジニアが実務でtouchコマンドによりタイムスタンプを更新する事例を挙げます。

  • 例1:findのmtimeオプションでタイムスタンプを基準にファイル検索したい場合
  • 例2:処理を行った証跡としてタイムスタンプを明示的に更新したい場合
  • 例3:JSPの自動コンパイルのきっかけとしてJSPのタイムスタンプを更新する場合

未来日付または過去日付でタイムスタンプを更新する

touchコマンドでは、現在時刻以外の時間でタイムスタンプを更新することもできます。以下のようにtオプションを使います。

touch -t YYMMDDHHMM 《ファイル名》

未来日付(★2045年)でタイムスタンプを更新する例を示します。

過去日付(★2000年)でも同様です。

常に空ファイルにして更新したい場合

touchコマンドでは、ファイルがあればタイムスタンプが更新され、なければ空ファイルが生成されます。しかしファイルがあった場合も空ファイルにして、中身も含め更新したい場合もあります。そういうときは以下のようにします。

/dev/nullをcatしてリダイレクトする事で、ファイルサイズが0バイト(★)の空ファイルになります。

運用業務上の注意点

運用業務上、touchコマンドを使って過去日付や未来日付で更新するのは避けたほうが良いでしょう。障害調査などでファイルのタイムスタンプから時系列を確認する際、事実と異なるタイムスタンプを使っていると混乱します。タイムスタンプを更新したい場合は現在時刻で更新するのが大原則です。

おわりに

今回は以上です。touchコマンドの2つの用途(用途1:空ファイルを作成する、用途2:タイムスタンプを更新する)について解説しました。実務で利用する場合の参考になりますと幸いです。