Files

如何獲得標準輸入的大小?

  • November 13, 2020

我即將壓縮一個大目錄,我想知道生成的文件到底有多大。

我試過使用du

$ tar -cv dir | du -h -
du: cannot access '-': No such file or directory

然後我嘗試使用’-‘的文件版本:

$ tar -cv dir | du -h /dev/stdin
1.0K

我敢肯定這個數字不准確。如何獲得標準輸入的大小?

tl;博士tar -cv dir | wc -c - | cut -d' ' -f 1 | awk '{print $1/1000"K"}'

du實際上並沒有計算文件本身的大小。它只是要求核心查詢已經跟踪文件大小的文件系統。這就是它如此之快的原因。因此,您計算的是流而不是文件這一事實du不起作用。我的猜測是這是核心中1.0K的硬編碼大小。/dev/std*

解決方案是使用wc -c,它自己計算字節而不是查詢核心:

$ tar -cv dir | wc -c

如果您想要類似於以下內容的輸出du -h

$ tar -cv dir | wc -c | awk '{print $1/1000"K"}'

awk數字轉換為人類可讀的結果。

引用自:https://unix.stackexchange.com/questions/206733