#!/bin/bash
### 定数
readonly LIST=delete.lst # 削除対象リスト
readonly LOG=delete.log # 削除結果ログ
### 変数
INF_COUNT=0 # 削除成功数
ERR_COUNT=0 # 削除失敗数
### リストファイル確認
if [[ ! -r "$LIST" ]]
then
echo "ERR [$LIST] リストファイルが存在しない" >> $LOG 2>&1
exit 1
fi
### リストファイル読み込み
while read target pattern days dummy
do
### コメントまたは空白の場合は読み飛ばす
if [[ "$target" == \#* ]] || [[ -z "$target" ]]
then
continue
fi
### パラメーター不正
if [[ "$pattern" == \#* ]] || [[ -z "$pattern" ]] || \
[[ "$days" == \#* ]] || [[ -z "$days" ]]
then
(( ERR_COUNT++ ))
echo "ERR [$target][$pattern][$days] パラメーター不正" >> $LOG 2>&1
continue
fi
### 削除対象ファイル取得
files=$(find $target -maxdepth 1 -name "$pattern" -mtime +$days -type f 2>/dev/null)
### 該当ファイルチェック
if [[ -z "$files" ]]
then
echo "WAR [$target/$pattern] 該当ファイルなし" >> $LOG 2>&1
continue
fi
### 削除処理
for buf in $files
do
cmd_del="/bin/rm -f $buf"
### 削除コマンド実行
$cmd_del > /dev/null 2>&1
if (( $? == 0 ))
then
(( INF_COUNT++ ))
echo "INF DEL $buf" >> $LOG 2>&1
else
(( ERR_COUNT++ ))
echo "ERR DEL $buf" >> $LOG 2>&1
fi
done
done < "$LIST"
### 総合エラーチェック
echo "INF 削除数=[$INF_COUNT] 削除エラー数=[$ERR_COUNT]" >> $LOG 2>&1
### 終了処理
if (( ERR_COUNT == 0 ))
then
exit 0
else
exit 1
fi