Com o GNU stat :
stat -c %s -- $(<list) | paste -d+ -s - | bc
-
statexibe informações sobre o arquivo-
-cespecifica o formato,%sfornece o tamanho do arquivo em bytes
-
-
paste -d+ -sconcatia a saída juntos linha por linha com um+como delimitador -
bccanalizado parabc, será calculado em conjunto.
Adicione uma opção -L a stat , se para links simbólicos, você preferiria contar o tamanho do arquivo que o symlink eventualmente resolveu.
Isso pressupõe um shell como ksh , bash ou zsh com o operador $(<file) para invocar split + glob no conteúdo de um arquivo.
Aqui, espera-se que list seja um espaço, tabulação ou nova linha (supondo o valor padrão de $IFS ), uma lista delimitada de padrões de arquivo (como em *.txt /bin/* ). Para uma lista de caminhos de arquivo, um por linha, você precisaria desabilitar o globbing e limitar o $IFS somente para a nova linha ou com o GNU xargs :
xargs -rd '\n' -a list stat -c %s -- | paste -sd+ - | bc