bash日期操作

应用背景:我们经常会需要根据当前日期来产生所需要的文件名,或者产生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]$


你可能感兴趣的:(Date,bash)