タイトル
 メニューにないコーナーはTopからいけます
TOP覚え書きシェル(Shell) → This Page
シェル(Shell)サンプル

ファイル更新日時が指定日数を越えたログファイルを削除

前提

実施環境(以下の両方でテストしてます)
Red Hat 5.3+bash-3.2
Windows7+Cygwin1.7.9

サンプル

特定のディレクトリにあるファイル更新日時が指定日数を越えたログファイルを削除します。
(別にログファイルじゃなくてもいいけど分かりやすいので)

まぁよくあるサンプルですが、自分の備忘録用に。

find コマンドで
面倒なのでサンプルでは対象ディレクトリを ./ にしてます。
-type f でファイルを指定(ディレクトリなどは除外)
-name "*.log" で拡張子がlogのファイルを指定
-mtime +日数 でファイル更新日が指定日数を越えたファイルを指定
 ※「-mtime 日数」や「-mtime -日数」など、日付の前の記号で微妙に動作変わるので注意
-exec でヒットしたファイルを rm コマンドに渡して削除(-f付けて強制削除)

findRm.sh
#!/bin/sh

# --------------------------------------------------
# ファイル更新日時が指定日数を越えたログファイルを削除
# --------------------------------------------------
# 引数1:日
# --------------------------------------------------

PARAM_DATE_NUM=$1

find ./ -name "*.log" -type f -mtime +${PARAM_DATE_NUM} -exec rm -f {} \;

exit 0


実行結果

ちゃんと引数付けて
sh findRm.sh 7
のように実行してね
(例外処理一切入れてないので)
引数なしだとエラーでます。


サンプルのダウンロード

サンプル一式(zip)
文字コードUTF-8、改行コードLFです。

更新履歴

2011/08/09 本ページ新規追加


TOP覚え書きシェル(Shell) → This Page
Valid CSS!