Manipulando o SED

1. Manipulando o SED

Leonardo Bernardes
Asterion

(usa Ubuntu)

Enviado em 15/02/2008 - 17:37h

Estou tentando criar um script que substitua o underscore no nome de um arquivo por um espaço em branco, usando o SED. Criei o script só por curiosidade, pois pouco sei sobre isso, mas fiquei curioso de saber o que vai mal nele:

ct=1
for i in *
do
echo $i | sed "s:\_: :g" >> lista.txt
name=`sed -n "${ct} p; ${ct} q" lista.txt`
mv $i $name
((ct++))
done
rm lista.txt
exit 0

Com esse código, não consigo renomear os arquivos, embora em lista.txt eles estejam impressos da maneira que eu gostaria que ficassem. Se eu substituo o mv $i $name por echo $name, eles saem perfeitamente. O que há de errado?


  


2. Comando MV

Fernando
fsei

(usa Debian)

Enviado em 25/06/2008 - 20:17h

Como no seu script o nome do novo arquivo está sendo armazenado em $name, e essa varíavel conteém espaços, tipo "nome do arquivo", o mv entende que são vários nomes.
Para resolver o problema, coloque o segundo parâmetro entre aspas:
mv $i "$name"

Assim o seu problema estará resolvido

Posta o resultado


3. Genericão...

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 26/06/2008 - 02:26h

Assim também funcionaria:

for i in *
do
mv "$i" "${i//_/ }"
done






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts