[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]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re:[shell-script] Script interpreta nomes de arquivos com espaços como strings diferentes,
MrBiTs <=