読者です 読者をやめる 読者になる 読者になる

シェルスクリプト 古い日付のファイルを削除する

#!/bin/bash

# ディレクトリは適宜変更してください★
DIR="/tmp"

# ■ディスクの空き容量のKバイト単位で取得
# 実際の空き容量をKバイト単位で取得
# ※オプション無しでdfコマンドを実行すると1K blocks単位で出力する
free_size=$(df $DIR | \
sed -r -e "s/[^ ]+ +[^ ]+ +[^ ]+ +([^ ]+).+/\1/" | \
tail -n 1)
#echo $free_size

# ■必要な空き容量をKバイト単位で定義
# 10000000 と書くよりも、スクリプトの中で算術展開を使って
# 計算した方が、意味を読み取りやすいし、数値の変更もしやすい
required_size=$((10 * 1000 * 1000))
# この場合、二重括弧にしないとエラーになる
# <不明点>
# -> 1つ目の括弧は計算式で、2つ目の括弧は変数名を表す際のもの?
# -> この計算式でKバイトを表すという点が不明
#echo $required_size

# 実際の空き容量が、必要な空き容量より少なければ
if [ $free_size -lt $required_size ]
then
# 30日より過去にステータスが変更されたファイル
files=$(find $DIR -ctime +30)
for file in $files
do
#rm "$file"
echo $file
done
fi

学んだこと

比較演算子は、比較対象によって使い分ける

・文字列の比較

== != < >

・数値の比較

-eq, -ne, -lt, -le, -gt, -ge

<詳細>