DevSecOps

10 abr, 2007

Listar Arquivos e Pastas

Publicidade

Olá pessoal, quanto tempo!

Estou trabalhando bastante e aproveitei a ocasião para compartilhar esse script. Nada mais é que um combinado de ações do nosso Linux para listar todas as pastas com seus respectivos valores totais, e dizer o quanto está ocupando. Os parâmetros efetuam o agrupamento de cada pasta e, dentro desta pasta calcula o quanto possui de arquivos e sub-diretórios.

Exemplo: /pastaexemplo

Essa pasta será onde está o script e no qual possui, Pasta1, Paste2, Pasta3.

Quando efetua a consulta do script irá, mostrar a saída:

100K .
5.0M ../Pasta1/teste
2.0M ../Pasta1/arquivos/arquivo
100K ../Pasta1/arquivos/planilha
200K ../Pasta1/arquivos/image
7.4M ../Pasta1/arquivos

Veja que o script gerou da Pasta1, as informações sobre cada pasta interna e no primeiro ítem, como mostra no topo da lista o que possui na pasta raiz da Pasta1. Veja também que na última linha mostra o resultado da soma de todas as pastas de “arquivos” interna.

O script é útil de vários aspectos, como por exemplo quando está com sobrecarga no sistema e necessidade que efetue uma análise sobre o que está ocupando cada diretório e para que possa tomar decisões em relação a arquivos temporários, arquivos que estão antigos demais, ou que necessita ser feito backup para que possa já ter um diagnóstico de quanto poderá colocar no CD, DVD e outros.

De posse do funcionamento do script, agora vamos ver como ele se comporta.

Abra um arquivo com nome “espaco.sh” e edite:

!/bin/bash
for i in ( ls -al grep ‘d’ awk ‘{ print 8 }’ ); do
du -h i
done

Agora vamos detalhar, o que cada comando faz:

  • Linha 1: !/bin/bash

Sempre que for utilizar algum script deverá começar com essa linha. Ela indica com qual shell deverá ser executado o script. No nosso caso será o “!/bin/bash”

  • Linha 2: for i in ( ls -al

Iniciamos um loop com for e no qual temos vários comandos dentro.

Acima em negrito, temo o nosso ls (listar) com parâmetros “-al”.

—> a = (letra A) Lista todos os arquivos, incluindo quaisquer arquivo – ponto;

—> l = (letra L) Gera uma longa listagem de arquivos e diretórios;

  • Linha 2: grep ‘d’

O comando “grep” faz a busca na palavra de todos as informações que o comando “ls” encontrou e que sejam diretório. Pois o parâmetro passado foi “d”.

  • Linha 2: awk ‘{ print 8 }’

O comando awk faz a separação do contéudo encontrado pelo comando “ls” que foi filtrado por diretório com o comando grep ‘d’. No caso, o número 8 é a coluna. Lembrando que ele começa sempre com 0 (zero).

Então agora com os dados rodando nesta mesclagem toda, vejamos o que ele fará na próxima linha.

  • Linha 3: du -h i

Nesta linha 3, ele utiliza o comando “du” (tamanho arquivo) junto com o parâmetro “-h”, transforma o tamanho em Mb -> Megabits. E o “i” seria o ponteiro que possui o caminho da pasta.

E por fim, a última linha.

  • Linha 4: done

Após efetuado o processo de loop na pasta indicada, da saída e encerrada o script. Lembrando que todos os comandos deverão estar disponíveis no sistema e verifique também se a coluna do awk é realmente a coluna com o nome da pasta. Caso não seja, basta mudar um número menor ou maior ao indicado.

Espero que sirva para ajudar ainda mais nas otimizações de trabalhos repetitivos e muito cansativos. Aguardo comentários, críticas e sugestões.

Até a próxima.