- - PR -
findのオプションで-lsをつけるとディレクトリの場合エラーコードが返る
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-06-08 17:19
findのオプションでディレクトリが何日以上たったらそのディレクトリを削除する
スクリプトを作っているのですが 他人が以前作ったものをベースというよりも、それに似せようと思い作りこんでいますが 前回はファイルのみだったのですが、今回はディレクトリ以下も削除するスクリプトの作成を頼まれました。 それで本題ですが 削除のソースの実行部はこう書いています。 find "$rm_cache_path" -name "$rm_chche_name" -type d -mtime "$days" -ls -exec rm -fr {} \; >> $CACHE_RM_LOG 変数で表記してあるのでわかりにくいですが 分かりやすく書きます。 find . -name ???? -type d -mtime +0 -ls -exec rm -fr {} \; こんな感じをデバックで試していますが、どうもディレクトリ削除だと上手くいきません。 正しくはディレクトリは削除されるけど、エラーで返ります。 リターンコードですが ------------------------------ 53342 4 drwxr-xr-x 2 root system 512 Jun 8 16:45 /*/*/*/*/pokh find: 0652-081 ディレクトリを </*/*/*/*/pokh> に変更できません。 : このパス名のファイルまたはディレクトリは存在しません。 ------------------------------ ※ディレクトリの名前は"*"で置き換えました。 と返ってきます。 これを"-type"の指定を"-type f"のファイルにすると、リターンコードもキレイに上手くいきます。 何故"-ls"をつけるかというと、前の人がログを実行と同時にリダイレクトに書きこんでいました。 この処理を分ければログとディレクトリ削除は上手くいくんですが なるべく現行のまま出来たらなと思い、皆さんにご質問しました。 自分なりに"xargs"や"-exec"を";"で繋いだり工夫してみましたが上手くいきませんでした。 環境はAIX5.1です。 よろしくおねがいします。 [ メッセージ編集済み 編集者: noku 編集日時 2006-06-08 17:30 ] [ メッセージ編集済み 編集者: noku 編集日時 2006-06-08 17:31 ] | ||||
|
投稿日時: 2006-06-08 20:07
えー、疑問なのですが 「正しくはディレクトリは削除されるけど、エラーで返ります。」 「このパス名のファイルまたはディレクトリは存在しません。」 というのは、親ディレクトリを削除したからその中にある子ディレクトリが存在しないというのではないのですか? | ||||
1
