• ベストアンサー

AIXでの指定ディレクト以下の全ファイル削除について

お世話になっております。 AIX5.1のOSで、指定ディレクトリ以下(ファイルのみしか存在しない)ファイルを全て自動で削除するようにシェルを組むことは可能でしょうか? 以下のようにシェルを作成しましたが、ファイル数が多すぎるらしくエラーで削除することができませんでした。 ちなみに、ファイル数は約4000以上あります。 rm -f /(指定ディレクトリ)/* ファイル数が多くても削除できるようにしたいのですが、何かよい方法はありますでしょうか? 以上宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

#3の方の回答でよいと思うのですが、一点だけ。 ファイル数が大量にあるのなら、xargs をかませたほうが効率は良くなります。 find (指定ディレクトリ) -type f | xargs rm -f AIXのことは良く知りませんが、xargsがないことはないんじゃないかと。 あと細かいことですが、今回のような状況の場合組むのは 「シェルスクリプト」であって「シェル」ではありません。

参考URL:
http://x68000.q-e-d.net/~68user/unix/pickup?xargs
picoart
質問者

お礼

ありがとうございます。 無事に削除することができました。

その他の回答 (3)

回答No.3

すでに出ている回答でもOKだと思いますが、別解ということで。 >find /(指定ディレクトリ) -type f -exec rm -f \{\} \; とか。 ちなみに、#2の方の方法だと「/(指定ディレクトリ)」自身も消えてしまいます。

picoart
質問者

お礼

ありがとうございます。 無事に削除することができました。

  • angband
  • ベストアンサー率51% (86/168)
回答No.2

*(アスタリスク)を指定しているので、そこにファイル名が 展開されます。それがシェルの最大文字数を超えてるだけだと 思います。 # rm -f /(指定ディレクトリ) でよいはずです。

picoart
質問者

お礼

ご回答どうもありがとうございます。 やってみたのですけど削除できませんでした。

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

Perlで書いたらどうですか? 以下のコードは、Windowsでもどこでも動きます。 (つまりプラットフォーム非依存だ) #!Perl my $dir = shift; my @files = glob $dir . "/*"; print '見つかったファイル:', join("\n", @files), "\n", '削除しますか?:'; my $yesno=<>; if ($yesno =~ /y/) { unlink @files; } __END__

picoart
質問者

お礼

どうもありがとうございます。 Perlはコーディングしたことなかったので勉強になりました。

関連するQ&A