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
}
Labels:
bash,
dotfiles,
linux,
shellscript
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment