Dúvida ao renomear vários arquivos [RESOLVIDO]

1. Dúvida ao renomear vários arquivos [RESOLVIDO]

Arno Anderson da Silva
arnoanderson

(usa Debian)

Enviado em 02/08/2011 - 17:02h

Salve pessoal.
Como faço para esse comando ser recursivo?

for e in *;do mv "$e" "`echo $e | sed -e 's/í/í/g'`"; done

Estou corrigindo letras de alguns nomes de arquivos depois que mexi nas configurações de acentuação do Linux/Samba.

Valeu!


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/08/2011 - 16:42h

ooops...

esqueci de fechar o comando do sed, assim:

novo=`echo $i | sed -e 's/Ã/í/g'`

faltou a aspa simples (')...

entao o convmv ficaria

convmv -f cp850 -t iso88591 --notest $i

abs

3. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/08/2011 - 23:46h

Já está recursivo não? testei aqui e tentou fazer em todos os arquivos do diretório.

Abraços


4. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 03/08/2011 - 15:23h

Pelo que entendi você quer aplicar aos arquivos e subpastas. Então substitua o * por du e faça o teste.

Vai ficar assim:

for e in du;do mv "$e" "`echo $e | sed -e 's/Ã/í/g'`"; done

Por medida de segurança copie o conteúdo para /tmp e faça o teste com a cópia para não perder dados.


5. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Arno Anderson da Silva
arnoanderson

(usa Debian)

Enviado em 03/08/2011 - 17:54h

Exatamente isso. Pastas e subpastas.
Gostei da estratégia do du, mas não funcionou também. Tentei usar o find mas também não foi...
Tentei também:
cat . | while read X ; do Y=’echo $X | sed -e 's/í/í/g' ‘ ; mv $X $Y ; done
Nada...


6. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/08/2011 - 23:53h

hummmmm:

ls -1R [nome_do_diretorio] > list_arquivos.txt

while read LINHA
do
echo "$LINHA" | egrep '.*:$'
[ $? -eq 0 ] && LINHA=$(echo "$LINHA" | cut -d':' -f 1) && LINHA2="$LINHA" && continue
LOCAL=$(echo "$LINHA2"/"$LINHA") | mv "$LOCAL" $(echo "$LOCAL" | sed -e 's/í/í/g')
done < list_arquivos.txt

Ajuda?



7. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Arno Anderson da Silva
arnoanderson

(usa Debian)

Enviado em 04/08/2011 - 09:19h

rai3mb, tentei entender teu script mas meu conhecimento em shell não é tão bom assim, então não consegui resolver o problema que deu após executá-lo:
mv: falta operando arquivo de destino após`'

ls -1R Testes > list_arquivos.txt

while read LINHA
do
echo "$LINHA" | egrep '.*:$'
[ $? -eq 0 ] && LINHA=$(echo "$LINHA" | cut -d':' -f 1) && LINHA2="$LINHA" && continue
LOCAL=$(echo "$LINHA2"/"$LINHA") | mv "$LOCAL" $(echo "$LOCAL" | sed -e 's/o/j/g')
done < list_arquivos.txt

Estrutura de pastas está assim:

Testes:
1
aaoaa
yyoyy

Testes/1:
2
aaoaa
eeoaa



8. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/08/2011 - 15:28h

find . | while read i; do novo=`echo $i | sed -e 's/Ã/í/g`; mv "$i" $novo; done

ou ainda:

sudo apt-get install convmv

find . | while read i; do convmv -f cp850 -t utf8 --notest $i; done

boa sorte e avisa se deu certo


9. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Arno Anderson da Silva
arnoanderson

(usa Debian)

Enviado em 04/08/2011 - 15:50h

Beleza vfs?
O primeiro comando:
bash: command substitution: line 43: unexpected EOF while looking for matching `''
bash: command substitution: line 44: syntax error: unexpected end of file
mv: falta operando arquivo de destino após `.'

Quanto a sua segunda opção estou usando essa codificação:
inux:/home/arnoanderson/Testes# locale
LANG=pt_BR
LANGUAGE=pt_BR:pt:en
LC_CTYPE="pt_BR.ISO-8859-1"
LC_NUMERIC="pt_BR.ISO-8859-1"
LC_TIME="pt_BR.ISO-8859-1"
LC_COLLATE="pt_BR.ISO-8859-1"
LC_MONETARY="pt_BR.ISO-8859-1"
LC_MESSAGES="pt_BR.ISO-8859-1"
LC_PAPER="pt_BR.ISO-8859-1"
LC_NAME="pt_BR.ISO-8859-1"
LC_ADDRESS="pt_BR.ISO-8859-1"
LC_TELEPHONE="pt_BR.ISO-8859-1"
LC_MEASUREMENT="pt_BR.ISO-8859-1"
LC_IDENTIFICATION="pt_BR.ISO-8859-1"
LC_ALL=pt_BR.ISO-8859-1


10. Re: Dúvida ao renomear vários arquivos [RESOLVIDO]

Arno Anderson da Silva
arnoanderson

(usa Debian)

Enviado em 04/08/2011 - 16:57h

Funcionou, vfs.
Vou postar sua sintaxe completa, caso apareça alguém que precisa trocar caracteres recursivamente:

find . | while read i; do novo=`echo $i | sed -e 's/j/o/g'`; mv "$i" $novo; done

onde irá substituir recursivamente todos os "j" por "o"

Valeu, obrigado mesmo!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts