shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re:[shell-script] Script interpreta nomes de arquivos com espaços como


From: MrBiTs
Subject: Re:[shell-script] Script interpreta nomes de arquivos com espaços como strings diferentes
Date: Tue, 1 Feb 2005 06:09:56 -0300

> Fiz um script que renomeia arquivos em massa,usando os seguintes argumentos:
> script arquivos ext=extensao
> O problema está no fato de ocorrer erros com arquivos que contenham 
> espaços( mesmo protegendo todas as variáveis com aspas).. A cada espaço 
> que há no arquivo o for interpreta como sendo uma string,assim um 
> arquivo do tipo "blah blih.txt" conteria duas strings.
> #!/bin/bash
> bla=0
> if [ $# -lt 2 ] ;then echo "necessita de mais de 2 argumentos" ; exit
> fi
> ext=$( echo "$@" | sed 's/.*\(ext=[aA-zZ]\{3\}\).*/\1/g;'s/ext=//g'')
> for var in "$@" ; do
> if [ -d "$var" ] ; then continue ; fi
> case "$var" in
> $0 ) continue ;;
> ext=* ) continue ;;
> * ) if [ -e "$var" ] ; then true ; else echo "arquivo nao existente" ; 
> continue ; fi ; mod=$(echo "$var" | sed 's/\..\+//g' ) ;echo " $var - > 
> $mod.$ext" ; mv "$var" "$mod.$ext" ; ((bla++));;
> esac
> done
> echo "Quantidade de arquivos renomeados: $bla"

Ola, Priscila

Copiei  o seu script e, de modificacao efetiva, so o indentei. Dai, criei em um 
diretorio garbage, os seguintes arquivos:

[mrbits(frodo)garbage]$ ls -1t
arquivo com mais de um espaco.txt
arquivo 6.txt
arquivo 5.txt
arquivo_4.txt
arquivo_3.txt
arquivo2.txt
arquivo1.txt

Rodei ai o seu script, assim:

./renomeia.sh arquivo* ext=dcf

A saida foi:

 arquivo1.txt - >       arquivo1.dcf
 arquivo2.txt - >       arquivo2.dcf
 arquivo_3.txt - >      arquivo_3.dcf
 arquivo_4.txt - >      arquivo_4.dcf
 arquivo 5.txt - >      arquivo 5.dcf
 arquivo 6.txt - >      arquivo 6.dcf
 arquivo com mais de um espaco.txt - >  arquivo com mais de um espaco.dcf
Quantidade de arquivos renomeados: 7


A meu ver, esta tudo correto ai.

De qualquer maneira, nada que um tr -d ' ' na variavel $var nao resolva, isso 
se nao houver problemas em voce remover os espacos dos arquivos.


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]