Linux でディレクトリ内のすべてのファイルを削除するとき、rm * とするとArg list too long と表示されてうまくいかないのですが、どのようにしたら、全ファイルを確認なしで一括削除できますか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/01/11 22:36:36
  • 終了:--

回答(4件)

id:jouno No.1

jouno回答回数280ベストアンサー獲得回数02006/01/11 23:04:08

ポイント80pt

xargsをつかいます。

http://blog.nomadscafe.jp/archives/000331.html

xargsはすばらしい。 : blog.nomadscafe.jp

echo * |xargs rm


いちおう、確認なしのそんなに多量の削除はあんまりおすすめできませんが。

id:qoozoo

ありがとうございます。

2006/01/12 00:09:02
id:nikomi-udon No.2

nikomi-udon回答回数34ベストアンサー獲得回数02006/01/11 23:35:02

ポイント80pt

rm -R ./*

で問題無いと思います。

id:qoozoo

ありがとうございます。

2006/01/12 00:09:26
id:u1p No.3

u1ρ回答回数455ベストアンサー獲得回数62006/01/12 00:20:14

ポイント80pt

ディレクトリ内のすべてのファイルとサブフォルダを消すのなら、


rm -f ./* ./.*


ディレクトリ内のすべてのファイルとサブフォルダ以下全てを消すのなら


rm -rf ./* ./.*

id:qoozoo

ありがとうございます。

2006/01/12 00:23:08
id:t-wata No.4

t-wata回答回数82ベストアンサー獲得回数132006/01/12 12:25:41

ポイント100pt

Arg list too long は、ファイル数が非常に多いために起きています。

シェルは「*」をマッチするファイル名に展開し、コマンドに渡すのですが、このマッチするファイル名が多いと、引数として渡せなくなります。

この場合は、

find . -type f -maxdepth 1 -print0 |xargs -0 rm -f

とやるのが良いです。


このコマンドは、

・findでリストしたファイルをrm -fに渡し、

・カレントディレクトリの直下にあるファイルだけが対象( -type f -maxdepth 1 )で、

・確認せずに削除( rm -f )し、

・ファイル名に空白が入っていてもOK( -print0 と xargs -0で0x00をデリミタに指定)

となります。

id:qoozoo

ありがとうございます。

2006/01/13 21:48:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません