web-dev-qa-db-ja.com

4000ファイルのディレクトリでの `rm -rf *`の「引数リストが長すぎます」エラー

この問題は10年前のようにLinuxで修正されたと思いました。 4000ファイルは実際にはあまり過剰に見えないので、問題なく削除できるはずです。したがって、この問題は明らかにOSXに存在します-おそらくUbuntuには存在しません。私はOSXで開発し、Ubuntuにデプロイしています

どちらの環境でもシステムレベルの回避策はありますか?このような少数のファイルについて、この問題について考える必要は本当にありませんか?この問題はLinux、特にUbuntuにもまだ存在しますか?

2
timpone

これは問題ではなく、制限です。次のようなものを使用できます。

find ./ -exec rm -rf {} \;

または、仕事をする代替手段を使用しないことの問題は何ですか?

5
hereje

これは、私が知っているすべてのUnixとWindowsでまだ問題です。これは実際には、ファイルの数などではなく、コマンドラインで渡されるバイト数の制限です。

getconf ARG_MAXを試して、Unixの制限(バイト単位)を確認してください。 xargsコマンドを使用して、このような問題を回避できます。

5
jjlin

他の* nix、AFAIKについて話すことはできませんが、この「問題」は常にMac OSXに存在していました。

ARG_MAXは、/usr/include/sys/syslimits.hで次のように定義されています。

#define ARG_MAX   (256 * 1024)  /* max bytes for an exec function */

sysctl kern.argmaxは以下を返します:

kern.argmax: 262144

(これはMac OS X 10.7.3にあります。これらのタイプの制限の多くは、OS Xの存続期間中に徐々に増加しています)。

3
NSGod