Pages

Sunday, September 11, 2011

Scripts: urldecode e urldecodefilemv


Funções para renomear em lote arquivos com a notação: "Hoje%20%C3%89%20Dez.pdf"
Esse nome, caso não tenha percebido, devia ser "Hoje É Dez.pdf".
Renomear isso uma vez é fácil, dezenas de vezes, não é.

Depois de muita pesquisa (tá achando o que ? Que eu fiz isso sozinho ???), descobri como fazer isso sem grande esforço.
As duas funções abaixam trabalham em conjunto, mas a primeira independente da segunda (o inverso não é verdadeiro)

Como eu coloquei as funções no meu .bashrc, a rigor, o uso é

urldecodefilemv nome_do_arquivo_problemático

para renomear um único arquivo problemático, ou

urldecodefilemv *

para renomear todos os arquivos problemáticos.

Quem quiser colocar as funções em um script, pode, mas no caso, o modelo mais simples de organização seria colocar o conteúdo de cada função em um script, as outras n formas de combinar a informação fica por conta de cada um. Segue as funções.

urldecode() {
 arg="$1"
 i="0"
 while [ "$i" -lt ${#arg} ]; do
 c0=${arg:$i:1}
if [ "x$c0" = "x%" ]; then
c1=${arg:$((i+1)):1}
c2=${arg:$((i+2)):1}
printf "\x$c1$c2"
i=$((i+3))
else
echo -n "$c0"
i=$((i+1))
fi
 done
}


urldecodefilemv(){
 for i in "$@";  do 
   if [ -f "$i" ]; then
result=$(urldecode "$i")
if [ "$i" != "$result" ]; then
      mv "$i" "$result" 
fi
fi
 done
}

No comments:

Post a Comment