dポイントプレゼントキャンペーン実施中!

お世話になっております。

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

rm -f /(指定ディレクトリ)/*

ファイル数が多くても削除できるようにしたいのですが、何かよい方法はありますでしょうか?

以上宜しくお願い致します。

A 回答 (4件)

#3の方の回答でよいと思うのですが、一点だけ。



ファイル数が大量にあるのなら、xargs をかませたほうが効率は良くなります。

find (指定ディレクトリ) -type f | xargs rm -f

AIXのことは良く知りませんが、xargsがないことはないんじゃないかと。

あと細かいことですが、今回のような状況の場合組むのは
「シェルスクリプト」であって「シェル」ではありません。

参考URL:http://x68000.q-e-d.net/~68user/unix/pickup?xargs
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 11:18

すでに出ている回答でもOKだと思いますが、別解ということで。


>find /(指定ディレクトリ) -type f -exec rm -f \{\} \;
とか。
ちなみに、#2の方の方法だと「/(指定ディレクトリ)」自身も消えてしまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 11:18

*(アスタリスク)を指定しているので、そこにファイル名が


展開されます。それがシェルの最大文字数を超えてるだけだと
思います。

# rm -f /(指定ディレクトリ)

でよいはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 11:13

Perlで書いたらどうですか?



以下のコードは、Windowsでもどこでも動きます。
(つまりプラットフォーム非依存だ)

#!Perl

my $dir = shift;
my @files = glob $dir . "/*";

print '見つかったファイル:', join("\n", @files), "\n",
'削除しますか?:';
my $yesno=<>;
if ($yesno =~ /y/) {
unlink @files;
}

__END__
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 11:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!