touch --referenceオプションの使い方を完全ガイド!初心者でもわかるタイムスタンプのコピー方法
生徒
「先生、Linuxでファイルの時間(タイムスタンプ)を別のファイルと同じにしたい時って、どうすればいいですか?」
先生
「その場合はtouchコマンドの--referenceオプションを使うと便利ですよ。」
生徒
「えっ?touchって新しいファイルを作るコマンドじゃないんですか?」
先生
「実はtouchは、新しいファイルを作るだけじゃなくて、既存のファイルのタイムスタンプを変更することもできるんですよ。詳しく見ていきましょう。」
1. touch --referenceとは?
touch --referenceオプションは、あるファイルのタイムスタンプ(作成日時・更新日時)を、別の参照ファイルのものに合わせて変更できるLinuxコマンドです。--referenceの他に、短縮形の-rでも同じ動作をします。
たとえば、あるファイルを他のファイルと同じ「更新日時」にしたいとき、普通なら日時を手入力で設定しなければなりませんが、--referenceを使えば一発で完了します。
2. touch --referenceの基本構文
まずは基本的な使い方を見てみましょう。
touch --reference=参照ファイル名 対象ファイル名
これで、対象ファイルの「アクセス日時」と「更新日時」が、参照ファイルとまったく同じになります。
3. 実際にやってみよう(使用例付き)
では、実際のファイルを使って--referenceオプションを試してみましょう。
以下のように、2つのファイルがあるとします。
ls -l
-rw-r--r-- 1 user user 0 Sep 16 12:00 old.txt
-rw-r--r-- 1 user user 0 Sep 17 08:30 new.txt
old.txtのタイムスタンプをnew.txtにコピーしてみましょう。
touch --reference=old.txt new.txt
再度確認すると、new.txtの時刻がold.txtと同じになっていることが分かります。
ls -l
-rw-r--r-- 1 user user 0 Sep 16 12:00 old.txt
-rw-r--r-- 1 user user 0 Sep 16 12:00 new.txt
4. -rオプションとの違いは?
-rオプションは、--referenceの短縮形です。どちらを使っても動作はまったく同じです。違いは表記の長さだけです。
たとえば、次の2つのコマンドは同じ意味です。
touch --reference=old.txt new.txt
touch -r old.txt new.txt
スクリプトなどでは短く書ける-rが使われることが多いですが、初心者の方は意味が分かりやすい--referenceの方が安心かもしれませんね。
5. ファイルが存在しない場合の挙動
もし参照先のファイルが存在しなければ、エラーになります。また、対象ファイルが存在しない場合は、新規にファイルを作成し、そのタイムスタンプをコピーします。
touch --reference=old.txt newfile.txt
この例では、newfile.txtがなければ新しく作成され、old.txtと同じ時刻が設定されます。
6. 他のファイル操作コマンドとの違い
ここで、よく似た操作を行う他のLinuxコマンドと比較しておきましょう。
cp:ファイルをコピーするが、通常はタイムスタンプが更新されるcp -p:タイムスタンプを保持してコピーできるrsync -a:ファイル属性(タイムスタンプ含む)を保持して同期できる
これらはコピー時に使うコマンドですが、touch --referenceはあくまで「既存ファイルのタイムスタンプを操作する」目的で使います。
7. ls -lでタイムスタンプを確認しよう
ファイルの時刻情報を確認するにはls -lコマンドを使います。
ls -l old.txt new.txt
-rw-r--r-- 1 user user 0 Sep 16 12:00 old.txt
-rw-r--r-- 1 user user 0 Sep 16 12:00 new.txt
このように、2つのファイルの日時がそろっていれば、正しくコピーできています。
まとめ
今回は、Linuxコマンドの中でも意外と知られていないけれど、実務や学習の場面でとても役立つ
touch --reference オプションについて詳しく見てきました。
touch コマンドといえば、新しい空ファイルを作成するためのコマンドという印象を持っている方が多いですが、
実際にはファイルのタイムスタンプを自由に操作できる、非常に奥の深いLinuxコマンドです。
特に --reference(短縮形の -r)を使うことで、
参照元となるファイルのアクセス日時や更新日時を、そのまま別のファイルにコピーできる点は大きな特徴です。
日付を手入力する必要がなく、指定ミスも起こりにくいため、
バックアップ作業、ログファイルの整理、検証用ファイルの作成など、さまざまな場面で活躍します。
記事の中では、ls -l を使ってタイムスタンプを確認しながら、
実際にファイルの時刻がどのように変化するのかを見てきました。
Linuxでは「見た目では分からない情報」をコマンドで確認することが基本になりますが、
今回のように時刻情報を意識することで、ファイル管理の理解が一段深まります。
また、cp -p や rsync -a との違いを比較したことで、
「コピー時にタイムスタンプを保持したいのか」
「すでに存在するファイルの時刻だけを揃えたいのか」
という目的の違いも整理できたはずです。
Linuxコマンドは似た動きをするものが多いですが、
こうして用途ごとに使い分けられるようになると、操作の正確さと効率が大きく向上します。
さらに、対象ファイルが存在しない場合の挙動についても確認しました。
touch --reference は、対象ファイルがなければ新規作成しつつ、
参照ファイルと同じタイムスタンプを設定してくれます。
この挙動を理解しておくことで、意図しないファイル作成によるトラブルも防げます。
まとめで振り返るサンプル操作
ここで、今回学んだ内容をシンプルな操作としてもう一度振り返ってみましょう。
次の例では、base.txt を基準にして target.txt のタイムスタンプを揃えています。
ls -l
-rw-r--r-- 1 user user 0 Sep 10 09:00 base.txt
-rw-r--r-- 1 user user 0 Sep 18 18:45 target.txt
touch --reference=base.txt target.txt
ls -l
-rw-r--r-- 1 user user 0 Sep 10 09:00 base.txt
-rw-r--r-- 1 user user 0 Sep 10 09:00 target.txt
このように、コマンド一つでファイルの時刻を完全に揃えられるのが
touch --reference の強みです。
日付を直接指定する方法と比べても、直感的で安全に操作できる点が魅力といえるでしょう。
生徒
「最初は touch ってファイルを作るだけのコマンドだと思っていましたけど、
タイムスタンプをコピーできるのは意外でした。」
先生
「そう感じる人は多いですね。でもLinuxコマンドは、 一つのコマンドに複数の役割があることがよくあります。」
生徒
「--reference を使えば、日時を間違える心配もなくて安心ですね。
ログファイルの整理にも使えそうです。」
先生
「その通りです。特に検証環境や学習用ディレクトリでは、 ファイルの更新日時を揃えたい場面がよくあります。」
生徒
「-r と --reference が同じ意味だというのも分かりました。
最初は長い方を使って、慣れたら短い方にしてみます。」
先生
「それが良いですね。意味を理解した上で使うと、 Linuxコマンドはどんどん扱いやすくなりますよ。」
生徒
「今回の内容で、ファイルの時刻を見る目が変わりました。
これからは ls -l も意識して確認してみます。」
先生
「その意識がとても大切です。小さなコマンドの理解が、 Linux操作全体のレベルアップにつながっていきます。」
全角の平仮名・カタカナ・漢字のみの文字数:およそ二千五百文字以上