como lidar com espaços em nomes de arquivos

Iniciado por olinto, 29 de Julho de 2010, 23:23

tópico anterior - próximo tópico

olinto

Olá

Estou adaptando um script para diminuir os tamanhos de arquivos mp3 para ouvir em players portáteis. Neles não necessito de 320, 256, etc.

No entanto os scripts que encontrei não suportam espaços nos nomes de arquivos, p.ex., de http://www.vivaolinux.com.br/script/Reduzir-mp3-para-celular

...
for i in `ls -1 *.mp3`; do
  lame -b 128 --mp3input $i ${i%.mp3}-128.mp3
done

Se houverem espaços é dado o erro de excesso de parâmetros.

Há alguma forma de contornar esta limitação?

Obrigado,

Antônio
Antônio Olinto
Linux User 455618
Ubuntu User 31203

RonaldoRG

No terminal pra entrar com nomes de arquivos com espaço, eu digito o nome dele entre aspas, ex.: "nome do arquivo.mp3".
Não sou muito familiarizado com scripts, mas será que funciona assim:

...
lame -b 128 --mp3input "$i" ${i%.mp3}-128.mp3
...

de maneira que o nome do arquivo saia entre aspas.
Abraço.
Ubuntu 12.04

lueneberg

esse é um script para remover espaços,,vc pode adaptar no teu script ou usar ele antes

!/bin/bash
find | while read FN;do mv "$FN" "`echo $FN | sed -e 's/ /_/g'`";done


ele substitui os espaços por " _ "

fpissarra

Outra maneira é usar o comando exec do find:
find -iname \*.mp3 -exec ./myscript.sh '{}' +

Onde o seu 'myscript.sh' receberá cada um dos nomes de arquivo separadamente (é o '{}' na linha de comando).

Dai você pode escrever um script que tratará esse nome de arquivo e fazer o que vc quer.

olinto

Olá pessoal, obrigado pelas respostas. Estive off line uns dias. Vou tentar resolver a questão com as soluções dadas e volto a escrever.
Antônio Olinto
Linux User 455618
Ubuntu User 31203