você está aqui: Home  → Arquivo de Mensagens

Localização de Arquivos Grandes

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 24 de Novembro de 2000

Com relação a mensagem sobre os arquivos grandes, eu recebi algumas idéias interessantes, que estou retransmitindo.

Como diz o Larry Wall, criador do Perl, "there is more than one way of doing it".

A primeira delas me foi enviada pelo Fernando Roxo, da Conectiva <<roxo (a) conectiva com br>>. Leiam com atenção pois ele aborda alguns conceitos muito interessantes e certamente bastante úteis que podem ser usados em outros contextos.


  > ---------------------------------------------------------------------
  > Se o espaço em disco anda apertado em seu sistema Unix, para
  > descobrir os culpados os seguintes comandos podem ajudar:
  > 
  > find . -size +1024 | xargs ls -s | sort -nr | head -n 20 

Uma pequena modificação poderia ser :

    find . -size +1024 -exec ls -s {} \; | sort -nr | head -n 20

Esta forma usa a possibilidade do 'find' executar um comando a cada arquivo encontrado, neste caso o comando 'ls -s'. Alguém poderia questionar o fato de se estar invocando o comando 'ls' a cada novo arquivo encontrado, em lugar de um único evento como na sugestão apresentada. Neste caso estou me aproveitando do fato de o Linux/ Unixes fazerem um cache dos códigos recentemente executados, por isto depois da primeira invocação do 'ls' o sistema apenas executará a cópia que já está na memória, sem perdas maiores.

No caso do 'GNU find', presente no Linux e nos Free*nixes, pode-se ainda usar uma outra opção :

      find . -size +1024 -printf "%k %h/%f\n" | sort -nr | head -20

A opção "-printf" é bastante poderosa e flexível, para maiores informações "man find". Neste caso específico o símbolo "%k" será substituido pelo tamanho do arquivo em blocos de 1024 bytes ( K Bytes ). O símbolo "%h" corresponde ao 'dirname' ( ver "man dirname" ) do arquivo, e o símbolo "%f" ao 'basename' ( ver "man basename" ;)). Para efeito de formatação pode-se usar a forma :

      find . -size +1024 -printf "%8k %h/%f\n" | sort -nr | head -20

Que força um campo de 8 caracteres para o tamanho do arquivo.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

Gabriel Hidasy
31 Mai 2013, 00:55
Acho mais simples "du -ah | sort -h | tail -n X" pra dizer os X maiores arquivos
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script