Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Percorrer arquivos utilizando o FOR

Olá,

Vamos supor que eu tenho três arquivos em um diretório

teste arquivo.txt
teste arquivo2.txt
teste arquivo3.txt

Gostaria de executar algum comando sobre cada arquivo, porém eu recupero os nomes dos arquivos através de um outro comando, por exemplo ls -1.

Fiz o script:

#!/bin/bash

arquivos=$(ls -1)
for arquivo in $arquivos
do
        echo $arquivo
done

A saída é essa:

teste
arquivo2.txt
teste
arquivo3.txt
teste
arquivo.txt

Aparentemente não funciona quando tem algum espaço no nome do arquivo, o que fazer para resolver isso?

Observação: eu sei que usar o * dá certo.

At., Mateus

2 respostas
solução!

O loop FOR utiliza a constante IFS para determinar os separadores e por default é o "espaço", você precisaria alterar isso no seu script:

#!/bin/bash

IFS=$(echo -en "\n")
arquivos=$(ls -1)
for arquivo in $arquivos
do
        echo $arquivo
done

Obrigado, funcionou perfeitamente!