ファイルのバックアップを作る時に日付を付与するワンライナー

ファイルバックアップする時に下記のようなコマンドで、ファイル名に日付をつけてバックアップすることがあります。

$ cp /home/admin/test.txt /home/admin/test_20230907.txt

これ普通にバックアップする時にあまり面倒だと思いませんが、運用の作業で以下のような手順書がある場合に、コマンドをコピペでコマンドが叩けず、日付の箇所をその都度、個別に修正するのが面倒でdateコマンドを使って、ワンライナーでできないかと調べたらできました。

# 各種ファイルをバックアップする。YYYYMMDDの箇所は作業を実施する日付に置き換える

$ cp -p /home/admin/test.txt /home/admin/test_YYYYMMDD.txt
$ cp -p /home/admin/test.conf /home/admin/test_YYYYMMDD.conf
$ cp -pr /home/admin/test/ /home/admin/test_YYYYMMDD/

日付の箇所を、dateコマンドを利用して「$(date +%\%m%d)」のように変数にして実行すれば実施日の日付が入ります。
dateコマンドですので、日付のフォーマットは任意で変更できます。よく使う手順書でバックアップ時に日付を付与する箇所はdateコマンドで日付を付与する方法に変更しました。

環境によってはdateコマンドの実行時に「%」の箇所にエスケープ処理が必要な場合があります。エラーなどが上がる場合は「$(date +\%Y\%m\%d)」と%にエスケープ処理を追加してください

$ cp test.txt test_$(date +%Y%m%d).txt 

$ ls -l
total 2
-rw-r--r-- 1 admin admin    0 Sep  2 10:26 test.txt
-rw-r--r-- 1 admin admin    0 Sep  7 13:26 test_20230907.txt

# 「%」にエスケープ処理した場合のコマンド
$ cp test.txt test_$(date +\%Y\%m\%d).txt