"Después del juego es antes del juego"
Sepp Herberger

miércoles, 18 de mayo de 2016

Quitar acentos, eñes, etc del nombre de una serie de ficheros.

En mi centro tengo un proceso automático que sube un directorio completo de ficheros a un servidor ftp externo usado para publicación web. Ese servidor web no está muy afinado por su administrador en cuanto a codificación y tiene un problema con los ficheros que tienen en su nombre eñes, acentos y demás hierbas, por lo que para ahorrarme dolores de cabeza prefiero que no suba ningún fichero con esos caracteres en su nombre.

Aunque tengo a los usuarios que crean esos ficheros avisados para que tengan cuidado, es imposible evitar que se les cuele algo, por lo que lo mejor es usar un script que renombre esos ficheros antes de subirlos mediante la herramienta lftp.

Utilizo este código del blog de mi compañero Esteban, quedando así:

find /home/Publicaciones/ -type f -mmin +1 -print0 | while IFS= read -r -d '' -r f
do
  nuevo=$(echo "$f" |   sed  'y/áÁàÀãÃâÂéÉêÊíÍóÓõÕôÔúÚñÑçǪº/aAaAaAaAeEeEiIoOoOoOuUnNcCao/')
  test  "$f" != "$nuevo" &&  (echo "Corrigiendo $f" ; mv "$f" "$nuevo")
done

De esta manera me deshago de todo tipo de carácter que pueda causar problemas recorriendo el directorio /media/Publicaciones. Si el fichero experimenta cambios después de pasar por el sed lo renombro con "mv".

No hay comentarios:

Publicar un comentario