Para encontrar o tamanho de algum grupo de arquivos

1

Eu estava tentando descobrir o tamanho total de todos os arquivos pertencentes a um usuário específico.

Enquanto tentava, obtinha tamanhos diferentes ao executar comandos diferentes.

Qual comando está correto para descobrir o tamanho total de todos os arquivos pertencentes ao usuário em particular?

$ find . -type f -user silviya|ls -lh|head -1 
total 68K
$ find . -type f -user agalya|wc -c
284
$ find . -type f -user agalya|du -sk
120 .

por favor me explique o motivo dessa variação.

    
por Silviya 19.02.2016 / 14:18

2 respostas

5

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.

    
por 19.02.2016 / 14:40
-1

O comando # 1 fornece o tamanho total dos bytes "úteis" dos arquivos, de seus conteúdos.

O comando # 3 dá espaço em disco usado para armazenar os arquivos. Os discos são divididos em blocos (geralmente com 4 kB de comprimento) que não podem ser compartilhados por vários arquivos. Assim, um ficheiro de qualquer tamanho entre 1 e 4096 B utilizará 4 kB de espaço em disco, e. [Isso é simplificado. Em alguns tipos de FS como o ext, arquivos muito pequenos podem ser armazenados na própria tabela de arquivos, sem usar nenhum bloco de dados.]

O comando # 2 apenas conta o número de caracteres dos nomes dos arquivos . (Tamanho da saída do comando find .)

    
por 19.02.2016 / 14:39