Linux
CentOS
shell
RHEL
Linuxコマンド

cpコマンドでファイルに日付を追加してコピーする方法

環境

RHEL7.5環境で試しましたが、基本的には他のバージョンでも変わりません。

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)

日付(.YYYY-MM-DD)を追加してコピーする

日付(.YYYY-MM-DD)のみの追加であれば `date "+%F"` を覚えておくと便利です。

# cp -aiv /etc/hosts /etc/hosts.`date "+%F"`
 ‘/etc/hosts’ -> ‘/etc/hosts.2018-06-12
オプション 説明
-a 属性とディレクトリの構成を可能な限り保持してコピーする
-i 同名のファイルが存在する場合、上書き確認を行う
-v コピーの詳細情報を表示する

日時(.YYYYMMDD-hhmmss)を追加してコピーする

日付だけでなく、日時(.YYYYMMDD-hhmmss)まで追加することも可能です。
(少し長いのと、大文字小文字を間違えやすいかも)

# cp -aiv /etc/hosts /etc/hosts.`date "+%Y%m%d_%H%M%S"`
 ‘/etc/hosts’ -> ‘/etc/hosts.20180612_114839

【おまけ】変更箇所をdiffコマンドで確認する

変更確認用のdiffコマンドは、diff -udiff -y で実行すると比較しやすくなります。

  • diff -u : unified形式で比較する
# diff -u /etc/hosts.2018-06-12 /etc/hosts
--- /etc/hosts.2018-06-12      2018-06-12 12:06:51.806494031 +0900
+++ /etc/hosts 2018-06-12 12:08:12.398364751 +0900
@@ -1,2 +1,3 @@
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
+198.168.100.1  hoge.example.com hoge
  • diff -y : 横並びで比較する
# diff -y /etc/hosts.2018-06-12 /etc/hosts
127.0.0.1   localhost localhost.localdomain    127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain    ::1         localhost localhost.localdomain
                                             > 198.168.100.1  hoge.example.com hoge