カテゴリ: Linuxコマンド集 更新日: 2025/12/27

touch -rオプションの使い方を完全ガイド!初心者でもわかるタイムスタンプのコピー方法

touch -rオプション|別ファイルのタイムスタンプをコピーする方法
touch -rオプション|別ファイルのタイムスタンプをコピーする方法

先生と生徒の会話形式で理解しよう

生徒

「Linuxで、あるファイルの更新日時を、別のファイルにコピーしたいんですけど、そんなことできますか?」

先生

「はい、できますよ。touchコマンドの-rオプションを使えば、元のファイルのタイムスタンプをそのままコピーできます。」

生徒

「へぇ!わざわざ手動で日付を指定しなくてもいいんですね!」

先生

「その通りです。複数のファイルのタイムスタンプを揃えたいときにとても便利ですよ。」

1. touchコマンドとは?

1. touchコマンドとは?
1. touchコマンドとは?

touchコマンドは、Linuxでファイルの更新日時(タイムスタンプ)を変更したり、空のファイルを作成したりする基本的なコマンドです。

たとえば、以下のように実行すると、ファイルがなければ新しく作られ、すでにある場合は更新日時が現在時刻に変更されます。


touch sample.txt

2. -rオプションとは?

2. -rオプションとは?
2. -rオプションとは?

-rオプション(--referenceとも表記可)は、別のファイルの更新日時をコピーするためのオプションです。

形式は以下のとおりです:


touch -r 参照元ファイル 対象ファイル

たとえば、source.txtのタイムスタンプをtarget.txtにコピーしたい場合は、次のようにします:


touch -r source.txt target.txt

3. 実際の使用例と結果確認

3. 実際の使用例と結果確認
3. 実際の使用例と結果確認

では、実際に動作を確認してみましょう。

(1)参照元と対象ファイルを用意する


echo "元のファイルです" > source.txt
sleep 2
echo "新しいファイルです" > target.txt
ls -l
-rw-r--r-- 1 user user 22  9月 16 14:00 source.txt
-rw-r--r-- 1 user user 23  9月 16 14:00 target.txt

(2)target.txtのタイムスタンプをsource.txtに合わせる


touch -r source.txt target.txt
ls -l
-rw-r--r-- 1 user user 22  9月 16 14:00 source.txt
-rw-r--r-- 1 user user 23  9月 16 14:00 target.txt

このように、target.txtの日時がsource.txtと同じになります。

4. タイムスタンプのコピーが便利な場面

4. タイムスタンプのコピーが便利な場面
4. タイムスタンプのコピーが便利な場面

この-rオプションは、以下のような場面でとても便利です:

  • バックアップファイルの日時を揃えたいとき
  • スクリプトで処理後のファイルに元ファイルのタイムスタンプを引き継ぎたいとき
  • 同じ更新日時のファイルを複数作りたいとき

手作業で日付を指定するよりも確実でミスがありません。

5. --referenceオプションとの違いは?

5. --referenceオプションとの違いは?
5. --referenceオプションとの違いは?

touch -rと同じ意味を持つのが、--referenceオプションです。書き方が異なるだけで、機能は同じです。

たとえば、以下の2つはまったく同じ動作をします:


touch -r source.txt target.txt
touch --reference=source.txt target.txt

--referenceの方が意味が明確なので、スクリプトなどでは可読性を重視して使われることもあります。

6. touchの他オプションとの組み合わせ

6. touchの他オプションとの組み合わせ
6. touchの他オプションとの組み合わせ

-rオプションは、他のtouchオプションと組み合わせることはできません(-t-dと併用不可)。日時はコピー元のファイルに完全に一致させるため、追加設定は不要です。

7. スクリプトでの自動処理例

7. スクリプトでの自動処理例
7. スクリプトでの自動処理例

複数ファイルに同じタイムスタンプを付けたいときは、以下のようなシェルスクリプトが使えます。


#!/bin/bash
touch reference.log
for i in {1..3}
do
  fname="copy_$i.txt"
  touch "$fname"
  touch -r reference.log "$fname"
done

これで3つのファイルがすべてreference.logと同じ日時になります。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
stat -Lオプションの使い方を解説|シンボリックリンクをたどってファイル情報を確認しよう
New2
ファイル・ディレクトリ操作
realpath -eオプションの使い方を解説!Linuxで存在するファイルのみ絶対パスを取得する方法
New3
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
New4
ファイル・ディレクトリ操作
touch --referenceオプションの使い方を完全ガイド!初心者でもわかるタイムスタンプのコピー方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cpコマンドとは?Linuxでファイルやディレクトリをコピーする基本操作を初心者向けに解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
lsコマンドとは?Linuxでファイルやディレクトリを一覧表示する基本を初心者向けに解説