1 名前:login:Penguin [2010/04/18(日) 17:07:00 ID:7+igGymz] まずは2ch-Linux-Beginnersを読みましょう。 いろいろとまとめられているので(・∀・)イイ!! www12.atwiki.jp/linux2ch/ 読んでも解決しなかったら、質問を書きこむ前にここを読もう。 www12.atwiki.jp/linux2ch/?About 過去ログ検索(Part29: 22氏提供) 2chlinux.dtdns.net/2ch-linux-ks/ Google検索 www.google.co.jp/linux 関連スレッドは >>2-4 あたり。 前スレ くだらねえ質問はここに書き込め! Part 182 pc11.2ch.net/test/read.cgi/linux/1268087835/ 2chlinux.dtdns.net/2ch-linux-ks/thread/1268087835.html
588 名前:login:Penguin mailto:sage [2010/05/09(日) 17:47:32 ID:AkxdqMcg] すみません、ググっても分からなかったんで質問させてください。 find /hoge -type d -mtime +30 -exec rm -rf {} \; のように/hoge以下の更新されてから30日以上経過しているディレクトリを削除しようとしました。 実際に上記コマンドで対象のディレクトリは削除されるんですが、 「find: /hoge/xxxxx(対象のディレクトリ): そのようなファイルやディレクトリはありません」 というメッセージも出力されてしまいます。 何故なんでしょうか? 同様の疑問として、 mimizun.com/2chlog/unix/pc3.2ch.net/unix/pool/1016372780.html の>>444 を見つけたんですがこれを読んでも分からないんで解説出来る方いましたらお願いします。
589 名前:login:Penguin mailto:sage [2010/05/09(日) 18:27:19 ID:dTGur56E] たぶんfindの処理が再帰的になってしまわないようにとかそういう理由で、 findが呼び出された時点でのディレクトリツリーのリストをfind自身が持ってるんだと思うよ。 んでfindがディレクトリの中身を処理しようとしたときに、既に親ディレクトリがrm -rfされているから find が No such file or directoryと言うんじゃないかな。 と想像だけで書いてみたよ。ソースは読んでないから信頼度低いよ……。
590 名前:login:Penguin mailto:sage [2010/05/09(日) 19:06:43 ID:dTGur56E] >>588 >>589 とはちょっと違うような気がしてきたよ。 findはマッチするエントリがあったら子プロセスを作って-exec {}を実行、帰ってきたら探索を続けるっぽいよ。 ディレクトリにマッチしていた場合はfchdirするためにopenするんだけど、 その時にはもうディレクトリが消されているからNo such file or directoryだよ。 と、相変わらずソースは読んでいないけど書いてみたよ。 ちなみに結構簡単に再帰的な処理を発生させられたので、上に書いたのは買いかぶりすぎだったよ。
591 名前:588 mailto:sage [2010/05/09(日) 19:53:06 ID:AkxdqMcg] >>589-590 なるほど、そういえばfindは再帰的にサブディレクトリも漁るから、 第一階層をfindしてる最中に見つかったディレクトリに対して"rm -rf"を実行。 その後は保持してる第一階層のディレクトリ一覧から、 第二階層を検索しようとしたら既に存在してないからエラーってことですね。 ということは"-maxdepth 1"オプションをつけたら問題ないかなと思い実行してみました。 結果は問題なしでした!! 解説どうもありがとうございました。