実際のデータを活用した具体例は次のとおりです。du
次のように実行すると、/path/to/some/dir
次のようになります。
% du -s --bytes /path/to/some/dir
4218593783204 /path/to/some/dir
KB、MB、GBなどの「人が読める」単位でそのサイズを取得したいと思います。
1 KB = 2 ** 10 B
1 MB = 2 ** 20 B
1 GB = 2 ** 30 B
1 TB = 2 ** 40 B
1 PB = 2 ** 50 B
1 EB = 2 ** 60 B
この例では、人間が読むことができる必須単位は1TBなので、上記の規則に従って元の4218593783204バイトは次のように変換されます。
% printf -- "%f TB\n" $(( 4218593783204.0 / 2 ** 40 ))
3.836789 TB
du
だから同様の結果を探しています3.8T
。今まではそんなに良くなった。
問題は、呼び出し時にdu
3.8T付近に報告されている人が読めるサイズを見つけることができないことです。代わりに私はこれを得ます:
% du -sh /path/to/some/dir
5.3T /path/to/some/dir
% du -s --si /path/to/some/dir
5.8T /path/to/some/dir
% du -s --block-size=$(( 2 ** 40 )) /path/to/some/dir
6 /path/to/some/dir
(上記の最後の切迫した試みであることを使用したことは、うまくいっても悲惨なほど不適切であること--block-size
に注意してください。
私はこの結果を見て混乱しています。マニュアルの内容はdu
次のとおりです。
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
--si like -h, but use powers of 1000 not 1024
...これは何が起こっているのか理解するのに全く役に立ちません。
尋ねる:du
上記の最後の3つのコマンドが5.3T、5.8T、6という数字をどのように生成するかを説明できますか?