シェルスクリプト 古い日付のファイルを削除する
#!/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
<詳細>
- man bash