[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Remover acentuação nos nomes dos arquivos...
From: |
Robson - Yahoo |
Subject: |
Remover acentuação nos nomes dos arquivos... |
Date: |
Sun, 18 Dec 2011 09:11:00 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111105 Thunderbird/8.0 |
Bom dia para todos.
Meu nome é Robson, sou de Campina Grande/PB, uso Ubuntu 10.10 e tenho
poucos conhecimentos em Shell Script, porisso desejo participar dessa
lista. Este é meu primeiro tópico. Agradeço a ajuda de todos.
Estou com um problema, tenho um hd externo de 1 tb, e já tem zilhões de
diretórios e arquivos, só que uma bagunça total, muitos
arquivos/diretórios em letras maiúscula (ahg que raiva!) e acentuadas,
quando vou para o computador do meu irmão (win7) os caracteres
acentuados não são reconhecidos. Queria resolver esse problema de uma
vez por todas.
Obs.: A partição do hd externo de 1 tb é ntfs, scripts não conseguem ter
permissão de execução, tenho de mover o diretório para meu hd ext4 e
executar qualquer scripts (não sei se existe soluções para isso).
Preciso de um script que faça uma varredura em todos os diretórios do hd
externo, remova todos os acentos tanto dos diretórios como dos arquivos
e deixe tudo em letras minúsculas.
Achei no Google uns scripts, que funcionaram não muito bem, vejamos:
#!/bin/bash
for file in *;
do
newname=`echo "$file" | iconv -t 'ascii//TRANSLIT'`
mv "$file" "$newname"
done
--------------------Esse dá um erro, mas remove os acentos. O erro (eu
acho), é que ele tenta renomear todos os arquivos, com acento ou não, o
erro era mais ou menos assim: "você não pode renomear para si mesmo".
Outro problema, é que tenho de mover o script para cada diretório que
desejar executar. Tenho zilhões de diretórios, imaginem!! :( e também
não retira as letras maiúsculas.
Então, fazendo mais buscas, ontem a noite foi longa, passei a buscar nos
sites em inglês (pouco entendimento) e descobri mais dois scripts, mas
não sei como unir os dois, e mais, ele coloca um "_" nos espaçamentos,
eu até queria colocar um "." (ponto nos espaçamentos, mas não interessa
muito não).
Vejamos estes dois scripts:
How can I convert all upper-case file names to lower case?
# tolower - convert file names to lower case
for file in *
do
[ -f "$file" ] || continue # ignore non-existing names
newname=$(echo "$file" | tr '[A-Z]' '[a-z]') # lower-case version
of file name
[ "$file" = "$newname" ] && continue # nothing to do
[ -f "$newname" ] && continue # do not overwrite
existing files
mv "$file" "$newname"
done
Purists will insist on using
tr '[[:upper:]]' '[[:lower:]]'
in the above code, in case of non-ASCII (e.g. accented) letters in
locales which have them.
This technique can also be used to replace all unwanted characters in a
file name e.g. with '_' (underscore). The script is the same as above,
only the "newname=..." line has changed.
# renamefiles - rename files whose name contain unusual characters
for file in *
do
[ -f "$file" ] || continue # ignore non-existing names
newname=$(echo "$file" | sed 's/[^a-zA-Z0-9_.]/_/g')
[ "$file" = "$newname" ] && continue # nothing to do
[ -f "$newname" ] && continue # do not overwrite
existing files
mv "$file" "$newname"
done
The character class in [] contains all allowed characters; modify it as
needed.
-------------------------Não testei estes dois últimos scripts por não
ter certeza do que ele vai fazer nos meus arquivos preciosos.
Um amigo me indicou este grupo sobre shell script. Só espero que alguém
possa me ajudar a resolver meu problema. Vejam que eu pesquisei, não
gosto de querer tudo na mão sem ao menos fazer uma pesquisa. Como meu
conhecimento é pouco, e meu inglês péssimo, fico sem saber como resolver
sozinho.
Mais uma vez eu agradeço a toda equipe desse grupo.
Robson Dantas
address@hidden
address@hidden
- Remover acentuação nos nomes dos arquivos...,
Robson - Yahoo <=