なぜ出力は
du -sch ./
同一ではない
du -sch ./*
たとえば、du -sch
ユーザーのホーム ディレクトリで実行して 51 GB を取得しましたが、du -sch *
同じディレクトリで実行すると 47 GB になります。最初は隠しファイルを考慮しているのではないかと思いましたが、それでは 4 GB 近くの隠しファイル/フォルダーについては説明できません。
ディスクユーティリティのマニュアルを読みましたが、説明が見つかりませんでした。
答え1
最初は隠しファイルを考慮しているのではないかと思いましたが、それでは 4 GB 近くの隠しファイル/フォルダーについては説明できません。
これをどうやって測ったのですか?する隠しファイル/ディレクトリは 4 GB あります。ハードリンクが含まれている場合は、さらに多くなる可能性があります (ある意味では)。
こうするとわかります (-h
より正確な結果を得るために省略しました。tail
「合計」のみを渡すことです。でテストしましたbash
):
du -sc ./{.[!.],..?}* | tail -n 1 # hidden
du -sc ./* | tail -n 1 # non-hidden
du -sc ./{.[!.],..?,}* | tail -n 1 # hidden and non-hidden by wildcards
du -sc ./ | tail -n 1 # directory as a whole
(構文はこの答え)。
最初のコマンドが欠けています。最初の結果と 2 番目の結果の合計を取得します。次の場合を除き、最後の 2 つの結果と同じになります...
ただし、隠し部分と非隠し部分の間にハードリンクされたファイルがある場合は、合計はさらに大きくなります。これらのファイルは手動で合計すると2回カウントされますが、du
1回のパスで合計すると1回だけカウントされます。この場合、隠しファイル/ディレクトリによって、あなたが思っている以上に多くのスペースが占有されます(ただし、このスペースの一部は、隠しファイル/ディレクトリ以外の部分と「共有」されます)。-l
オプションdu
この動作を制御するもの:
-l
--count-links
ハードリンクの場合はサイズを何度もカウントします