LinuxParty
Hay veces, que los administradores de Linux, los programadores, los editores de contenido, como pueden ser editores de imágenes o vídeos... necesitan trabajar con muchos ficheros... Cuando se trata de muchos ficheros, es mejor trabajar con ficheros que no tengan espacios ni caractereres extraños, porque es mejor para buscarlos, para copiarlos o moverlos a algún sitio.
Esto me llevó a hacer un script para poder trabajar con un script que no necesitara muchos interactuaciones para que funcionara bien. Por lo que el script hace un trabajo muy sencillo, le introduces el el nombre del fichero, y directamente te lo devuelve en el mismo directorio sin los caracteres extraños.
Vamos a proceder a poner el código fuente del script para que puedas verlo, después lo puedes colocar en:
/usr/local/bin
o
$HOME/bin
(tal vez tengas que crear el directorio bin
, para tal proceso)
Nombre del script: renombraquitandoespacios.sh
#!/bin/bash
# Nombre del script: renombraquitandoespacios.sh
# Obtenemos en la "$Entrada" el nombre del fichero a procesar Entrada="$1" echo " Entrada: -> $Entrada" # C AM B IA M O S espacio por - puntos por - ( por - ) por - [ por - ] por - Pre0=`echo "$Entrada" | sed s/' '/'-'/g | sed s/'\.'/'-'/g | sed s/'('/'-'/g | sed s/')'/'-'/g | sed s/'\['/'-'/g | sed s/'\]'/'-'/g` # Caracteres raros por elementos vacío. Pre1=`echo "$Pre0" | sed s/'!'/''/g | sed s/'¡'/''/g | sed s/'?'/''/g | sed s/'¿'/''/g | sed s/','/''/g | sed s/'='/'-'/g | sed s/"'"/""/g` # En PreSalida, debe estar la última entrada de "PreX", sea Pre0, Pre1, Pre2... PreSalida=$Pre1 # Comprobamos que el primer caracter no sea "-", y si lo es, lo eliminamos. firstchar=$(expr substr $PreSalida 1 1) if [ "$firstchar" == "-" ] ; then echo "Primer caracter:" $firstchar PreSalida=`echo $PreSalida | sed -e 's/^-/./'` fi # Sustituimos: -mp4 por .mp4 -mkv por .mkv -avi por .avi SalidaOK0=`echo "$PreSalida" | sed s/'-mp4'/'.mp4'/g | sed s/'-mkv'/'.mkv'/g | sed s/'-avi'/'.avi'/g` SalidaOK1=`echo "$SalidaOK0" | sed s/'-jpg'/'.jpg'/g | sed s/'-png'/'.png'/g | sed s/'-ico'/'.ico'/g` SalidaOK2=`echo "$SalidaOK1" | sed s/'-docx'/'.docx'/g | sed s/'-xlsx'/'.xlsx'/g | sed s/'-dbx'/'.dbx'/g` SalidaOK3=`echo "$SalidaOK2" | sed s/'-doc'/'.doc'/g | sed s/'-xls'/'.xls'/g | sed s/'-txt'/'.txt'/g` SalidaOK4=`echo "$SalidaOK3" | sed s/'-conf'/'.conf'/g | sed s/'-txt'/'.txt'/g | sed s/'-sh'/'.sh'/g` SalidaOK5=`echo "$SalidaOK4" | sed s/'-webm'/'.webm'/g | sed s/'-svg'/'.svg'/g | sed s/'-cpp'/'.cpp'/g` SalidaOK6=`echo "$SalidaOK5" | sed s/'-mpg'/'.mpg'/g | sed s/'-wmv'/'.wmv'/g | sed s/'-gif'/'.gif'/g` # Añada como Salida, la última entrada de "SalidaOK(X)" Salida=$SalidaOK6 echo "Salida: -> $Salida" mv -v "$Entrada" "$Salida"
El funcionamiento sería el siguiente:
[javier@localhost dwhelper]$ renombraquitandoespacios.sh \'Horizonte\'\ \(16062022\)\,\ completo\ y\ en\ HD.mp4
Entrada: -> 'Horizonte' (16062022), completo y en HD.mp4
Salida: -> Horizonte--16062022--completo-y-en-HD.mp4
renamed ''\''Horizonte'\'' (16062022), completo y en HD.mp4' -> 'Horizonte--16062022--completo-y-en-HD.mp4'
