tl; dr : tar -cv dir | wc -c - | cut -d' ' -f 1 | awk '{print $1/1000"K"}'
du
na verdade não conta o tamanho do arquivo em si. Apenas pede ao kernel para consultar o sistema de arquivos, que já controla o tamanho do arquivo. É por isso que é tão rápido. Por causa disso, e o fato de você estar contando um fluxo, não um arquivo, du
não funciona. Meu palpite é que 1.0K
é um tamanho codificado para /dev/std*
no kernel.
A solução é usar wc -c
, que conta bytes em vez de consultar o kernel:
$ tar -cv dir | wc -c
Se você deseja uma saída semelhante a du -h
:
$ tar -cv dir | wc -c | awk '{print $1/1000"K"}'
O awk
transforma o número em um resultado legível por humanos.