- ベストアンサー
AIXでの指定ディレクト以下の全ファイル削除について
お世話になっております。 AIX5.1のOSで、指定ディレクトリ以下(ファイルのみしか存在しない)ファイルを全て自動で削除するようにシェルを組むことは可能でしょうか? 以下のようにシェルを作成しましたが、ファイル数が多すぎるらしくエラーで削除することができませんでした。 ちなみに、ファイル数は約4000以上あります。 rm -f /(指定ディレクトリ)/* ファイル数が多くても削除できるようにしたいのですが、何かよい方法はありますでしょうか? 以上宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の方の回答でよいと思うのですが、一点だけ。 ファイル数が大量にあるのなら、xargs をかませたほうが効率は良くなります。 find (指定ディレクトリ) -type f | xargs rm -f AIXのことは良く知りませんが、xargsがないことはないんじゃないかと。 あと細かいことですが、今回のような状況の場合組むのは 「シェルスクリプト」であって「シェル」ではありません。
その他の回答 (3)
- shuyamakawa
- ベストアンサー率67% (111/164)
すでに出ている回答でもOKだと思いますが、別解ということで。 >find /(指定ディレクトリ) -type f -exec rm -f \{\} \; とか。 ちなみに、#2の方の方法だと「/(指定ディレクトリ)」自身も消えてしまいます。
お礼
ありがとうございます。 無事に削除することができました。
- angband
- ベストアンサー率51% (86/168)
*(アスタリスク)を指定しているので、そこにファイル名が 展開されます。それがシェルの最大文字数を超えてるだけだと 思います。 # rm -f /(指定ディレクトリ) でよいはずです。
お礼
ご回答どうもありがとうございます。 やってみたのですけど削除できませんでした。
- guci-ok
- ベストアンサー率33% (49/146)
Perlで書いたらどうですか? 以下のコードは、Windowsでもどこでも動きます。 (つまりプラットフォーム非依存だ) #!Perl my $dir = shift; my @files = glob $dir . "/*"; print '見つかったファイル:', join("\n", @files), "\n", '削除しますか?:'; my $yesno=<>; if ($yesno =~ /y/) { unlink @files; } __END__
お礼
どうもありがとうございます。 Perlはコーディングしたことなかったので勉強になりました。
お礼
ありがとうございます。 無事に削除することができました。