本当に奇妙な「du」行動

本当に奇妙な「du」行動

/etc/*.confこの場合、特定のフォルダにあるファイルのサイズを印刷したいと思います。

私が使用するとき:

cd /etc

du -ch $(ls | grep .conf) | tail -1 | cut -f1 

私は120Kを得ます。

私が使用するとき:

du -bch $(ls | grep .conf) | tail -1 | cut -f1

私は46Kを得ます。サイズは同じですが、バイト単位でなければなりません。そうですか?それでは120000、何かがあるはずです。

私が使用するとき:

du -bsh $(ls | grep .conf) | tail -1 | cut -f1

1.3Kを受けましたが、この人は誰ですか?

答え1

du -hcファイルサイズをファイルシステムブロックサイズ(通常は4K)の倍数で表示します。これは、リストされたファイルの物理ディスク使用量です。この-hオプションは人が読める形式(K / M / G)で寸法を印刷し、この-cオプションはリストの最後に寸法全体を印刷します。

[root@testvm1 etc]# du -hc *.conf
4.0K    asound.conf
4.0K    chrony.conf
4.0K    dracut.conf
....
4.0K    vconsole.conf
4.0K    yum.conf
104K    total

du -bchを使用すると、引数-bはファイルサイズをバイト単位でリストします。ただし、このオプションは、--apparent-sizeディスク使用量ではなくファイルの見かけのサイズを表示することを意味します。これは一般的に合計を下げます。

[root@testvm1 etc]# du -bch *.conf
55      asound.conf
1.1K    chrony.conf
1.3K    dracut.conf
....
41      vconsole.conf
970     yum.conf
32K     total

du -sh-s各パラメータの合計サイズを表示するこのオプションを使用します。このオプションは通常、ディレクトリと共に使用されます。このオプションは、ファイルリストに使用されたときに-s特別な出力を生成しません。コマンドの出力はdu -bshリストの最後のファイルサイズである可能性が高いです。


この-bオプションは、--apparent-size --block-size=1単位をバイトに保ちながらブロックサイズ計算を使用する場合は、この--block-sizeオプションのみを使用してください。

[root@testvm1 etc]# du --block-size=1 -c *.conf
4096    asound.conf
4096    chrony.conf
4096    dracut.conf
...
4096    vconsole.conf
4096    yum.conf
106496  total

答え2

duなしで結果を確認する必要があります。| tail -1 | cut -1

(-hオプションを無視してk、Mのみを追加してください...)

(目安としてhttp://man7.org/linux/man-pages/man1/du.1.html)

-cすべてのファイルのディスク使用量と合計を印刷します。ファイルシステムの形式によっては、ファイルのディスク使用量が実際のサイズより大きい場合があります.)

-bcディスクが使用するサイズではなく、「実際の」サイズを印刷します。

-bs提供されている各ファイル/フォルダの合計「実際の」サイズのみが印刷されますdu。各ファイルを詳しく調べると、各* .confファイルのサイズが計算され、最後の行はユーザーが提供した最後の* .confファイルのサイズです。

PS:おそらく次のようにすることができます。du -bch *.conf結果に対してgrepの代わりにlsを実行することです。

関連情報