Usando o for no bash
3 de Setembro de 2008 por Bruno Alves | Na(s) Categoria(s) Linux.
Bash da Wikipedia
Muitas vezes temos que interagir com vários arquivos de uma vez só e parece não haver uma maneira fácil de fazer. Porém o bash é um interpretador de comandos, que pode ser usado como uma linguagem de programação.
Se quisermos, por exemplo, fazer a mesma operação com vários arquivos, temos a excelente opção de usar um for para que os comandos sejam executados em todos eles.
Olhando um exemplo real:
Em um diretório, entre outros arquivos, possuía uma série de arquivos xml, que eu precisava comprimir, usando o GZip. Seria fácil rodar o comando:
$ gzip *.xml
Isso resolveria para criar os arquivos comprimidos, porém eu acabaria sem os originais, a maneira mais simples de preservar o arquivo original é direcionar a saída do gzip para o novo arquivo, assim o arquivo original seria preservado. O comando para isso seria:
$ gzip -c 1.xml > 1.xml.gz
Mas fazer isso para 350 arquivos seria muito chato, então resolvi usar um for para isso. O código é bem simples:
$ for filename in *.xml
> do gzip -c $filename > ${filename}.gz
> done
Se quiser usar em apenas uma linha:
for filename in *.xml; do gzip -c $filename > ${filename}.gz; done














