Lógica de Repetição no Terminal: Processando Múltiplos Arquivos em Lote com o Loop for

Lógica de Repetição no Terminal: Processando Múltiplos Arquivos em Lote com o Loop for

Automatizar tarefas repetitivas em dezenas ou centenas de arquivos é uma das maiores vantagens do uso de scripts em Shell. O loop for no Bash permite iterar sobre conjuntos de arquivos que correspondem a um padrão, aplicando comandos em lote sem a necessidade de intervenção manual. A seguir, veja como percorrer arquivos de um diretório e executar operações com segurança.

Bash

#!/bin/bash
# Script para renomear e criar backups de múltiplos arquivos .txt em lote

# 1. Definindo o diretório alvo
DIRETORIO_ALVO="./documentos"

# Criando estrutura de teste
mkdir -p "$DIRETORIO_ALVO"
touch "$DIRETORIO_ALVO/nota1.txt" "$DIRETORIO_ALVO/nota2.txt" "$DIRETORIO_ALVO/relatorio.txt"

echo "=== Processando arquivos do diretório ==="

# 2. Iterando sobre todos os arquivos com extensão .txt
for ARQUIVO in "$DIRETORIO_ALVO"/*.txt; do
    # Evita erros caso nenhum arquivo corresponda ao padrão (globbing)
    [ -e "$ARQUIVO" ] || continue

    # Extrai o nome do arquivo sem o caminho
    NOME_BASE=$(basename "$ARQUIVO")
    
    # Exemplo de processamento em lote: criando cópia de backup (.bak)
    cp "$ARQUIVO" "${ARQUIVO}.bak"
    echo "Backup gerado com sucesso: ${NOME_BASE}.bak"
done

Exemplo de uso e verificação no terminal:

Bash

# Executando o script para processar os arquivos criados
chmod +x loop_arquivos.sh
./loop_arquivos.sh

# Listando os backups gerados
ls ./documentos/*.bak

Pontos-chave

  • Expansão de Nomes (Globbing): O padrão *.extensao é expandido pelo próprio Shell antes da execução, entregando ao loop a lista exata de caminhos encontrados.
  • Uso de Aspas Duplas: Sempre proteja a variável do loop com aspas (ex: "$ARQUIVO") para evitar erros de execução em arquivos cujos nomes contenham espaços.
  • Prevenção contra Null Glob: Se nenhum arquivo corresponder ao padrão especificado, o Bash trata o padrão literal (ex: *.txt) como valor da variável; a verificação [ -e "$ARQUIVO" ] evita falhas nesse cenário.
  • Extração de Nomes com basename: O comando basename remove o caminho do diretório e retorna apenas o nome do arquivo, ideal para logs e mensagens limpas.
  • Manipulação Segura: Dê preferência ao loop for sobre laços com ls (for i in $(ls)), pois o uso direto do globbing lida corretamente com quebras de linha e caracteres especiais.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *