shell 刪除目錄下指定日期前的所有檔案

2021-06-16 04:20:46 字數 1355 閱讀 5835

有一批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...