Em:
find . -type f -user silviya|ls -lh|head -1
você está canalizando a saída de find para ls , mas ls não lê sua entrada. Leva a lista de arquivos para listar como argumentos. Na ausência de argumentos como aqui, ele lista os arquivos não ocultos no diretório atual. Então, aqui, você obtém o uso do disco de todos os arquivos não ocultos (de qualquer tipo) no diretório atual (com o tamanho de um determinado arquivo contado para cada um de seus hard links).
Em:
find . -type f -user agalya|wc -c
Você está contando o número de bytes na saída de find , de modo que é o tamanho dos caminhos de arquivo (e os delimitadores de nova linha), não o uso de disco nem o tamanho do arquivo.
Em:
find . -type f -user agalya|du -sk
Como ls , du considera a lista de arquivos como argumentos, não de sua entrada. Então, aqui, você obtém o uso do disco de todos os arquivos e diretórios no diretório atual (recursivamente).
Para obter o uso do disco de todos os arquivos comuns pertencentes a agalya , com os utilitários GNU, você faria:
find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1
--files0-from informa du (GNU du only) para obter a lista de arquivos da entrada padrão (representada por - aqui). -c fornece o tamanho cumulativo (note que os links físicos de um mesmo arquivo são contados apenas uma vez).
Para obter o tamanho aparente do arquivo em oposição ao uso do disco, adicione a opção --apparent-size a du (novamente, específico do GNU). Adicione a opção -l (também específica do GNU) para contar links físicos várias vezes.