Laço de Repetição - com while e for

Publicado por Fábio Jânio em 08/03/2012

[ Hits: 23.356 ]

 


Laço de Repetição - com while e for



Laço de Repetição, quando são utilizados e para que servem?

Existem tarefas que são cansativas de serem realizadas por procedimentos manuais.

Se você quer um exemplo, aqui vai, renomear 2 mil arquivos em ordem numérica (1, 2, 3...). Se eu tivesse que renomear manualmente estes 2 mil arquivos, passaria o dia todo fazendo isso.

Mas, se eu automatizar este processo criando um laço de repetição, deixo o computador trabalhar por mim.

- Criando o laço de repetição com 'for'

O comando para criar este laço é:

x=1; for i in *; do mv $i $x; x=$((x+1)); echo $x ; done

Interpretando:

No primeiro momento, 'x=1', estou definindo que a variável 'x' será igual à 1 e que ';', está separando as instruções. 'for i in *' é nosso laço propriamente dito, onde 'i' armazena o nome dos arquivos e '*', considera todos os arquivos do diretório. 'mv $i $x' renomeia os arquivos do nome atual '$i' para o valor armazenado em '$x' que inicialmente é 1. 'x=$((x+1))', aqui somo mais 1 ao valor atual de '$x'. 'echo $x' imprimo os valores de '$x'.

Se você estiver renomeando arquivos “.jpg”, será importante manter a extensão após o processo de mudança de nome. Então basta fazer isso:

x=1; for i in *; do mv $i $x.jpg; x=$((x+1)); echo $x ; done

Você pode ainda mudar o primeiro valor de 'x=1', caso queira renomear contando de um determinado valor, como por exemplo: x=100.

- Laço de repetição com 'while'

Mostrarei a seguir, um outro procedimento de Loop simples.

x=0; while true; do clear; echo Total de listagens $x; x=$((x+1)); ls -l; sleep 3; clear; done

Aqui tenho um processo de Loop infinito, que tem como objetivo, imprimir o valor de 'x$', que inicialmente é zero. Depois somar 1 ao valor atual de '$x', fazer uma listagem 'ls -l', aguardar 3 segundos 'sleep 3' e limpar a tela 'clear', na sequência o comando é repetido.

Vamos à outra variação do 'while':

x=0; while [ $x -lt 3 ]; do clear; echo Total de listagens $x; x=$((x+1)); ls -l; sleep 3; clear; done

Aqui temos o seguinte: '[ $x -lt 3 ]', ou seja, execute este laço enquanto '$x' for menor que '3'.

Espero que gostem desta pequena publicação.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Estrutura de diretórios do GNU/Linux

Gerenciando histórico de comandos no GNU/Linux

Skype - Erro: Imagem da WEBcam muito escura [Resolvido]

PostgreSQL com ZEROFILL e AUTO_INCREMENT

Dupla diabólica: find e xargs

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts