С GNU tarвы можете просто сделать:
tar --totals -c . >/dev/null
... который будет выводить как ...
Total bytes written: 5990400 (5.8MiB, 5.5GiB/s)
... на stderr. Точно так же с любым tar (или потоком) вы можете использовать ddдля доставки отчета о количестве байтов. Это может быть или не быть предпочтительным wc, но по ddумолчанию размер блока составляет 512 байт, что соответствует tarразмеру блока в России. Если PIPE_BUF вашей системы достаточно велик, вы можете даже увеличить ddразмер блока до соответствия tarразмеру записи - который составляет 20 блоков или 10240 байт. Нравится:
tar -c . | dd bs=bx20 >/dev/null
585+0 records in
585+0 records out
5990400 bytes (6.0 MB) copied, 0.0085661 s, 699 MB/s
Это может или не может предложить более эффективное решение, чем wc.
В обоих ddи tarпотребительных случаях вам не нужно на самом деле избавиться от потока, хотя. Я перенаправил на /dev/nullвыше - но я мог так же легко перенаправить на какой-то файл и все же получить отчет о его размере на момент его написания.
wcлишнее,-то и последующаяcutкоманда вам не нужна .