Victor, não sei se é exatamente isso o que você quer, mas se tudo que você precisa é mudar o caráter "?" do nome de algum arquivo por "x" então aí vai uma sugestão (lembrando que o script só vai funcionar com os arquivos dentro da pasta atual):
#!/bin/bash acent=$(ls -1 |grep "\?") if [ -z "$acent" ]; then echo "Nenhum arquivo com '?' encontrado!" else lines=$(echo "$acent" |wc -l) ct=1 while [ $ct -le $lines ]; do old=$(echo "$acent" |awk 'NR == '$ct' {print $0}') new=$(echo "$old" |sed 's/\?/x/g') mv "$old" "$new" ((ct++)) done exit 0 fi Mande notícias caso tenha funcionado! Abraços Leonardo Bernardes Usuário Linux # 444329 brausen.blogspot.com 2008/8/14 aiok_gui <[EMAIL PROTECTED]> > > Olá amigos, > > Meu nome é Victor e usei muito o Linux de 97 a 2001. Depois dei uma > parada para trabalhar com Win (coisas do ofício). > > Bem, atualmente estamos incubados na Fundação Softville, em Joinville-SC. > > Estou com um problema e após procurar e estudar bastante e não > conseguir resolver meu problema, fui procurar nos fóruns para ver se > encontrava uma solução. > > Achei um post do Julio Cezar Neves para renomear um grupo de arquivos > com caracteres especiais (acentuados). > > Vou relatar meu problema e gostaria que, se possível, vocês nos > ajudassem: Tenho uma máquina com Windows XP (hda1 - C: e hda2 - D:). > Ao instalar o Debian 4, eu provavelmente alterei o hda2 para hidden. > Bem, consegui com o gpart/cfdisk recuperar a partição. > Ao entrar no Windows, lá está o D:, mas vazio. Retornando no Linux, > montei como root a partição, consegui ler os arquivos, mas não consigo > gravar na partição, mesmo mudando as permissões para total (777). > > Bem, uma solução para recuperar os arquivos, a partir do Linux, seria > gravar os dados do D: (hda2) para um diretório qualquer (p.e. > /home/d), mas como os arquivos acentuados aparecem com o caracter "?", > que é um coringa, não consegui copiar/mover. > > O script do Julio que encontrei é o script abaixo adaptado por mim: > > #!/bin/bash > # > # Testando se vc passou o diretorio como parametro > # default = diretorio corrente. > # > if [ $# -eq 1 ] > then > Dir=$1 > else > Dir="." > fi > cd $Dir > for ComAcen in `ls -R | grep '[\?]'` > do > SemAcen=`echo $ComAcen | tr "[\?]" "[x]"` > > # listando os 2 em ordem cronologica (-t) e > # pegando o + novo (head -1). Se o que acabamos de tirar > # os acentos for mais novo, será renomeado. > mv -f $ComAcen $SemAcen > done > > ------------- > > Como não terei arquivos com nomes repetidos, o if que fazia este teste > dentro do for foi retirado. > > Fui pra linha de comando, gravei este arquivo em /mnt e mudei > a permissão para execução. Mas ao executar, ele não faz o que > gostaria, ou seja, mudar o "?" para "x". > Já tentei mudar de "/?" para "?", mas também não funcionou. > > Alguém poderia me ajudar? > > Cordialmente, > > Victor >