du -hs .[!.]* 実行中にエラーが発生しました

du -hs .[!.]* 実行中にエラーが発生しました

隠しディレクトリを含むすべてのディレクトリのサイズを見たいです。私が出会ったコマンドの1つは次のとおりです。 du -hs .[!.]*

しかし、エラーが発生します。

du: cannot access ‘.[!.]*’: No such file or directory

何が間違っているのかわかりません。

答え1

表示されるエラーは、現在のディレクトリに隠されたファイルやディレクトリがないことを意味します。.[!.]*名前が「.」で始まるすべてのファイルまたはディレクトリに一致するように拡張されます。 「.」を除くすべての項目が続き、一致する項目がない場合はデフォルトでそのまま残ります。したがって、あなたの場合、durunは.[!.]*実際のファイルまたはディレクトリ名を引数として使用し、現在表示されているエラーメッセージを生成します。

nullglobここでシェルの動作変更を有効にできます。

shopt -s nullglob

その後、シェルは一致しないパターンを削除し、du一致しない場合は現在のディレクトリの使用量を報告します(引数なしのデフォルト動作)。

Bashで欲しいものを達成するには、次のことを行う必要があります。

du -sh .[!.]*/ */

これは、隠しディレクトリを含む現在のディレクトリのすべてのディレクトリに拡張されます。有効にしないと、nullglobエラーメッセージは引き続き表示されますが、一致するディレクトリのサイズが表示されます。

答え2

次のコマンドが欲しいようです。

du -hsc --exclude "./.*" */ | sort -h

関連情報