bash日付アクション

1381 ワード

適用背景:現在の日付に基づいて必要なファイル名を生成したり、10日以内のファイルを生成したりすることがよくありますが、このファイル名は日付に関連しています.
次の例を見てください.
[zcm@bash #48]$cat dateoper.sh 
#!/bin/bash
today=`date +%Y%m%d`
filename="pre_"$today"_tail.txt"
echo $today
echo $filename
echo

n=5
if [ $# -eq 1 ]; then
	let n=$1
fi
bak=$n		# n 

echo " $n :"
while [ $n -gt 0 ]
do
#	temp=`date --date="$n day ago" +%Y%m%d`
	temp=`date --date="$n days ago" +%Y%m%d`
	filename="pre_"$temp"_tail.txt"
	echo $filename
	let n=n-1
done
echo

let n=bak	# n 
echo " $n :"
while [ $n -gt 0 ]
do
	temp=`date --date="$n day" +%Y%m%d`
#	temp=`date --date="$n days" +%Y%m%d`
	filename="pre_"$temp"_tail.txt"
	echo $filename
	let n=n-1
done
echo
[zcm@bash #49]$

実行結果を確認します.
[zcm@bash #49]$./dateoper.sh 
20111129
pre_20111129_tail.txt

 5 :
pre_20111124_tail.txt
pre_20111125_tail.txt
pre_20111126_tail.txt
pre_20111127_tail.txt
pre_20111128_tail.txt

 5 :
pre_20111204_tail.txt
pre_20111203_tail.txt
pre_20111202_tail.txt
pre_20111201_tail.txt
pre_20111130_tail.txt

[zcm@bash #50]$./dateoper.sh 3
20111129
pre_20111129_tail.txt

 3 :
pre_20111126_tail.txt
pre_20111127_tail.txt
pre_20111128_tail.txt

 3 :
pre_20111202_tail.txt
pre_20111201_tail.txt
pre_20111130_tail.txt

[zcm@bash #51]$