アプリ版:「スタンプのみでお礼する」機能のリリースについて

シェルにて「abc.0101171109(.以降は年月日時分)」
というようなログファイルを一日3回、作成しています。
これを一週間、または一ヶ月たったら
自動的に削除するにはどうすればよいでしょうか。

OSはSolaris2.6で、
シェルはBでもCでも何でもかまいませんのでよろしくお願い致します。

A 回答 (4件)

findで条件を並べて書けばANDになるので-nameでファイルを制限すれば良いのではないでしょうか?



paz777さんの例に追加してます。
find {directory} -name abc.\[0-9\]\* -mtime +7 -exec rm -r {} \;

もちろん-nameあとの部分は希望のファイル名に合わせてください。

FreeBSD 4.2-RELEASEとUnixware7で動作確認してます。
    • good
    • 0

すいません。

再登場です。
h_hikitaさんの回答を見て、自分の回答が
「やばい」ことに気付きました。
σ(^^)の回答をそのまま実行すると、対象とならない
別のファイルまで削除してしまいます。

一応、ディレクトリ内には対象のログファイルしか
ない場合が前提になります。(^^;

すいませんでした。
「自信なし」に変更!!!
    • good
    • 0

こんにちは。


UNIXコマンドのfindで対応できないでしょうか?

find {directory} -mtime +7 -exec rm -r {} \;
こんな形です。(最後の[;]も必要です)
{directory}には、対象ディレクトリを指定して下さい。
[+7]が更新日になります。
1週間であれば[+7]、1ヶ月であれば[+30]ってな感じ
です。

ではでは・・・
    • good
    • 0

GNU Shell utilities のなかにあるdateコマンドをインストールして



find . -not -newer `date '1 month ago' '+abc.%y%m%d0000'` -exec rm {} \; -print

とかではどうでしょうか?

あとは、atかcronでこれを定期的に実行する。

# サブディレクトリがない&同じディレクトリにはログファイル以外のファイルがないというのが前提です。

この回答への補足

すばやい回答ありがとうございます。
せっかくのご回答ですが、
インストールは行うことができないので、
できればインストールを行わずに、
シェルだけで何とかできないでしょうか?

補足日時:2001/01/17 12:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!