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

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

[ Hits: 23.374 ]

 


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

Encore wireless USB (ENUWI-G2) x Ubuntu

Instalando o Beryl junto com o XGL/Compiz

Rode o Office online (Office Live Workspace) no Firefox, no Linux!

Sistema não inicia o desktop environment? Saiba como resolver!

Entendendo as permissões de arquivos no Linux

  

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