フォルダから多数のファイルを削除する

フォルダから多数のファイルを削除する

137795 個のファイルを含むフォルダーがあります。それらをすべて削除する必要があります。実行すると、 というエラーが表示さrm *れます-bash: /bin/rm: Argument list too long。このエラーを回避するにはどうすればよいですか?

答え1

ご覧のとおり、ディレクトリを削除する必要はなく、その中のファイルだけを削除すればいいのです。だから再作成することができます

rm -r /path/to/dir && mkdir /path/to/dir

または内部のファイルのみを削除することもできます

find /path/to/dir -type f -delete

確かに最初のものの方が早く動作します。

UPD。 の方法は、findディレクトリ サイズが の後でのみ縮小されるため、スペース消費の観点からは最適ではない可能性があることに注意してくださいfsck詳細

答え2

回避策 1:

find /path/to/dir -delete

回避策 2:

rm a*;

rm b*;

rm c*;

etc

答え3

を使用するのfindがおそらく最善の策です。他の回答の問題のいくつかは、ディレクトリ内のすべての内容が削除されないか、ディレクトリ自体が削除されることです。特殊文字がない場合は を、特定のオプションがある場合はlsを使用することができます。xargsfind

ls -1 | xargs rm -r

または

find . -depth -path ./.* -prune -o -not -name . -delete

これは、現在のディレクトリ内の.( ) で始まるものをすべて無視し、トップ ディレクトリ ( )-pruneでない限り、その他のファイルまたはディレクトリを削除します。 は最初にディレクトリ内を検索するため、「ディレクトリが空ではありません」というエラーを回避できます。システムで引数が使用できない場合は、 を使用します。.-depth-not!

関連情報