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