bash e arquivos com espaço no nome

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á!

Anúncios

3 Comentários on “bash e arquivos com espaço no nome”

  1. lucas disse:

    IFS=’

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

  2. Felippe disse:

    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 ‘‘’’.

  3. alef disse:

    boooa :D

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


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s