bash e arquivos com espaço no nome

4 07 2008

Você já precisou fazer um “for” em arquivos ou diretórios que têm espaço no nome? Como o “for” do bash trata o espaço como delimitador, o seguinte comando não funcionaria:

for zz in $(find . -iname \*.mpg); do echo "nome: $zz"; done

Caso haja um espaço no nome dos arquivos, cada parte dele será tratada como $zz. Nesse caso, é bem simples resolver – usando os próprios recursos do bash.
Abaixo o exemplo:

find . -iname \*.mpg | while read zz; do echo "nome: $zz"; done

Há!


Ações

Informações

3 respostas

5 07 2008
lucas

IFS=’

for a in *;do echo “hoho $a .”;done

5 07 2008
Felippe

da pra mudar o IFS pra usar new line:
IFS=$’\n’
e usar o for normalmente

IFS The Internal Field Separator that is used for word splitting
after expansion and to split lines into words with the read
builtin command. The default value is ‘‘’’.

5 07 2008
alef

boooa :D

o lucas, o seu \n virou um <br> hein! haha

Deixe um comentário