unix のファイルに関する質問です。あるディレクトリ内にあるファイルをチェックして、1日前のものは消去するようにするのはどうすると簡単なのでしょうか? ややディレクトリが深い階層になっています。シェルのスクリプトできるならいいですし、シェルスクリプトを、ruby もしくは、php で作成するのもありです。サンプルのコード付きがありがたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/02/28 18:48:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント30pt

こんな感じでどうでしょう。findコマンドを使っているだけです。

"hogehoge" は消去対象としたいディレクトリです。

ディレクトリの削除まではしていません。

find hogehoge -type f -mtime +0 -exec rm -f {} \;
id:dev_zer0 No.2

回答回数332ベストアンサー獲得回数25

ポイント50pt

findを使えば出来ます

http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html


なお、ファイル数が多い場合、findの-execオプションよりも

パイプで渡してxargsを使ったほうが速いですが、

ファイル名に空白が入っていたりするとマズイ状態になります


なぜマズイのかは以前の質問のコメント欄でBookmarkerさんが参考にされた記事

以前の質問:http://q.hatena.ne.jp/1190441422

参考記事:http://www.otsune.com/diary/2007/03/29/1.html

あたりを読むとわかります


結論として1日前の/tmp配下のファイルを消す方法としては

find /tmp -type f -mtime -1 -print0 | xargs -0 rm

というコマンドにすればよいということになります

id:kaiketsu

ありがとうございます。

2009/02/28 15:56:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません