- ベストアンサー
シェルにてファイルの自動削除をするには?
シェルにて「abc.0101171109(.以降は年月日時分)」 というようなログファイルを一日3回、作成しています。 これを一週間、または一ヶ月たったら 自動的に削除するにはどうすればよいでしょうか。 OSはSolaris2.6で、 シェルはBでもCでも何でもかまいませんのでよろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
findで条件を並べて書けばANDになるので-nameでファイルを制限すれば良いのではないでしょうか? paz777さんの例に追加してます。 find {directory} -name abc.\[0-9\]\* -mtime +7 -exec rm -r {} \; もちろん-nameあとの部分は希望のファイル名に合わせてください。 FreeBSD 4.2-RELEASEとUnixware7で動作確認してます。
その他の回答 (3)
- paz777
- ベストアンサー率47% (77/163)
すいません。再登場です。 h_hikitaさんの回答を見て、自分の回答が 「やばい」ことに気付きました。 σ(^^)の回答をそのまま実行すると、対象とならない 別のファイルまで削除してしまいます。 一応、ディレクトリ内には対象のログファイルしか ない場合が前提になります。(^^; すいませんでした。 「自信なし」に変更!!!
- paz777
- ベストアンサー率47% (77/163)
こんにちは。 UNIXコマンドのfindで対応できないでしょうか? find {directory} -mtime +7 -exec rm -r {} \; こんな形です。(最後の[;]も必要です) {directory}には、対象ディレクトリを指定して下さい。 [+7]が更新日になります。 1週間であれば[+7]、1ヶ月であれば[+30]ってな感じ です。 ではでは・・・
- h_hikita
- ベストアンサー率40% (104/257)
GNU Shell utilities のなかにあるdateコマンドをインストールして find . -not -newer `date '1 month ago' '+abc.%y%m%d0000'` -exec rm {} \; -print とかではどうでしょうか? あとは、atかcronでこれを定期的に実行する。 # サブディレクトリがない&同じディレクトリにはログファイル以外のファイルがないというのが前提です。
補足
すばやい回答ありがとうございます。 せっかくのご回答ですが、 インストールは行うことができないので、 できればインストールを行わずに、 シェルだけで何とかできないでしょうか?