De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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