dateコマンドでファイル名とかを設定する(フォーマット)

2016.9.20 (火)
file_`date "+%Y%m%d_%H%M%S"`.txt

file_20140409_111255.txtというファイルができます。私はたいていcronでバックアップファイルを作るときなんかに利用してます。

mysqldump -u user -h localhost -pPASSWORD sample_db sample_tbl > /tmp/dumpfile_`date "+%Y%m%d_%H%M%S"`.sql

とかいうのもいいです。
dateコマンドにはフォーマットがいろいろあるでいろいろ使えます。

文字列 指定した文字列を表示する
%H 時 (00〜23)
%I 時 (01〜12)
%k 時 ( 0〜23)
%l 時 ( 1〜12)
%M 分 (00〜59)
%p AM あるいは PM のロケール(国や地域に合わせた文字列)
%r 12時間形式の時刻 (HH:mm:ss [AP]M)
%s 1970-01-01 00:00:00 UTC からの秒数
%S 秒 (00〜61)
%T 24時間形式の時刻 (HH:mm:ss)
%a ロケールによる省略形の曜日の名前 (Sun〜Sat)
%A ロケールによる完全に表記した曜日の名前(Sunday〜Saturday)
%b ロケールによる省略形の月の名前 (Jan〜Dec)
%B ロケールによる完全に表記した月の名前(January〜December)
%c ロケールによる日付と時刻 (Sat Nov 04 12:02:33 EST 1989)
%d 日(月内通算日数) (01〜31)
%D 日付 (MM/DD/YY)
%j 年内通算日数 (001〜366)
%m 月 (01〜12)
%w 週のうちの曜日(0〜6)で0が日曜日に対応
%x ロケールによる日付の表現 (MM/DD/YY)
%y 西暦の下2けた (00〜99)
%Y 年 (1970〜)

バックアップファイルなどのローテートをする際には、1ヶ月前の日付けとか1週間前の日付けとかが必要になってくるので、こんな書き方もします。
1日前を表示

# date -d '1 days ago' "+%Y%m%d_%H"

1ヶ月前を表示

# date -d '1 months ago' "+%Y%m%d_%H%M"

1年前を表示

# date -d '1 years ago' "+%Y%m%d_%H%M"

こういった書き方はシェルで不等式みたいなものを書くのではなくて、正規表現みたいな感じで簡単に書いてしまいます。

rm -f file-`date -d '1 days ago' "+%Y%m%d_%H"`*.tar.gz

上記のコマンドの場合、今日が例えば2014年4月10日だとして、毎日1回cronを実行して昨日以前のものを削除してしまう場合は、

file-20140409_183022.tar.gz

というファイルが削除されます。10日前とかでも適当に設定できます。