有一批runlog.yyyymmdd* 的日誌檔案(檔名中帶有年月日資訊),需要一次清理指定的日期前/或設定n天前的所有檔案。
編寫了乙個shell指令碼,用於完成此項任務。
指令碼內容:
#!/bin/sh -
#############################################
#created by ma fanghua#
#2010-04-07#
#############################################
help()
calc_date()
'`days=`expr $days - $bbb`
done
dd=`expr 0 - $days`
#expr $dd : "^.$" > /dev/null && dd=0$dd
#expr $mm : "^.$" > /dev/null && mm=0$mm
[ $dd -le 10 ] && dd=0$dd
[ $mm -le 10 ] && mm=0$mm
threshold_date=$yy$mm$dd
}if [ $# -lt 1 ] ; then
help;
fid_date=$1
while getopts hb: option
docase $option in
h) help;;
b) echo $optarg
clean_before_days=$optarg
calc_date
d_date=$threshold_date;;
/?) echo "invalid args"
exit;;
esac
done
d_date_len=`echo $d_date | awk ''`
if (($d_date_len != 8))
then
echo "please input the date with format yyyymmdd!"
exit
fitmp_date=`ls runlog.*`
for file_name in $tmp_date
dodate_num=`echo $file_name | awk -f. '' | cut -c 1-8`
if (($date_num < $d_date))
then rm -r $file_name
fidone
使用方法
***.sh -h
***.sh -b n
***.sh yyyymmdd ( 如 ***.sh 20100407)
刪除指定目錄下指定日期格式前的檔案
刪除指定目錄下指定日期格式前的檔案 param dir 目錄 param date 時間 param flag true false 按照名字刪除 名稱必須是字串格式 按照最後修改日期刪除 param namedate 名字的日期格式串 return true false 刪除成功 失敗 publi...
shell指令碼刪除指定日期和指定日期前的檔案
測試環境redis持久化到硬碟報錯,發現是因為硬碟空間不夠導致。去尋找占用空間較大的任務,發現flink日誌檔案佔了70 容量,在此之前在測試環境沒有對flink日誌進行維護和刪除。為了以後自動維護日誌檔案,需要寫乙個能夠定時執行任務的shell指令碼。思路 每日凌晨執行指令碼,刪除一周之前的那一天...
mysql刪除指定日期前資料
由於資料上報產生資料量過大,因此需要定期刪除無用資料。mysql語句如下 1 delete from t iot cb device data changed where event time is null or date event time date date sub now interval...