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.