Files
如何獲得標準輸入的大小?
我即將壓縮一個大目錄,我想知道生成的文件到底有多大。
我試過使用
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
數字轉換為人類可讀的結果。