du を使用すると引数リストが長すぎます。

du を使用すると引数リストが長すぎます。

特定のフォルダで大きなファイルを検索するコマンドがありますが、何らかの理由で動作せず、「引数リストが長すぎます」というエラーが発生します。このコマンドが常に機能するように変更するにはどうすればよいですか?

jbsmith:/tmp$ sudo du -hsx * | sort -rh | head -10
-bash: /usr/bin/sudo: Argument list too long

ベストアンサー1

findワイルドカードの代わりにコマンドを次のように置き換えることができます。

sudo find . -maxdepth 1 ! -name "." -exec du -hsx {} + | sort -rh | head -10

あなたがfindこの+表記法を支持すると仮定します。

これにより、詳細を見ることなく、現在のディレクトリの下のすべてのエントリを見つけることができ、「.」は無視されます。 (お知らせいただいた@rudimeierに感謝!)

これには、元のglobと同様に、現在のディレクトリ内のすべてのファイルが含まれます。 globとは異なり、これは.(すでに有効にするためにシェルオプションを使用しない限りdotglob)で始まるファイルも探します。

おすすめ記事