• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación & Desarrollo
    • Soporte técnico
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / Linux / Cómo optimizo imágenes sin usar editores de imágenes

Cómo optimizo imágenes sin usar editores de imágenes

El 29 de agosto de 2025 por dani.sanchez Deja un comentario

Lo primero que hago cuando voy a empezar un nuevo montaje o maquetación web es preparar las imágenes. Las descargo de Figma, Adobe XD… o cualquiera que sea la fuente que me proporcionan.

Una vez descargadas las organizo en carpetas con el nombre de la página, post o producto al que pertenezcan.

Al principio las optimizaba una a una con GIMP. Escalar y exportar a webp con compresión del 85% . También aprovechaba en la exportacion para limpiar el nombre del archivo (quitar tildes, «eñes», caracteres especiales…

En proyectos con varias decenas de imágenes es una tarea que lleva más del tiempo del necesario.

Desde hace tiempo ya no uso GIMP para optimizar las imagenes, sino ImageMagick, un conjunto de comandos que permite convertir formatos, reescalar, comprimir (y más cosas) en lotes desde el terminal de Linux.

Lo primero que hago es situarme en el directorio y convertir a webp:

mogrify -format webp *.jpg
mogrify -format webp *.png

Elimino los archivos JPG o PNG:

rm *.jpg
rm *.png

Si algunas imágenes son demasiado grandes para web, las separo y las reescalo a un ancho máximo (en WordPress 2560px):

mogrify -resize 2560 *.webp

Por último aplico la compresión:

mogrify -quality 85 *.webp

Y nada más, en menos de un minuto he convertido, reescalado y comprimido todas las imágenes de un directorio.

Ahora solo faltaba limpiar el nombre, esto aún lo seguía haciendo a mano, hasta hoy…

Ya que uso Linux me pregunto, ¿y si creo un script en BASH que limpie los nombres de archivo de un directorio completo?

Aquí me ayudó DeepSeek, empezó generando un pequeño script en BASH para quitar las tildes de los nombres de archivo.

Pero seguí añadiendo cosas y al final tengo un script que limpia los nombres con todo lo que necesito:

  • Elimina tildes.
  • Cambia eñes por enes.
  • Elimina cualquier caracter especial.
  • Sustituye los espacios por guiones bajos.

Y este es el script completo:

limpiar-nombres() {
    local DIRECTORIO="${1:-.}"
    
    if [ ! -d "$DIRECTORIO" ]; then
        echo "❌ Error: El directorio '$DIRECTORIO' no existe."
        return 1
    fi
    
    echo "🔄 Limpiando nombres de archivos en: $DIRECTORIO"
    echo "📝 Caracteres que se eliminarán/reemplazarán:"
    echo "   - Tildes (á, é, í, ó, ú, ñ)"
    echo "   - Caracteres especiales (@, #, $, %, &, *, !, ¿, ?, ¡)"
    echo "   - Espacios (reemplazados por _)"
    echo "   - Paréntesis, corchetes, llaves"
    echo "   - Comillas y apóstrofes"
    local contador=0
    
    # Usar find para manejar mejor archivos con espacios
    find "$DIRECTORIO" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' archivo; do
        local nombre_original=$(basename "$archivo")
        local directorio=$(dirname "$archivo")
        
        local nuevo_nombre=$(echo "$nombre_original" | sed -e '
            # Reemplazar tildes y ñ
            y/áàäâÁÀÄÂ/aaaaAAAA/
            y/éèëêÉÈËÊ/eeeeEEEE/
            y/íìïîÍÌÏÎ/iiiiIIII/
            y/óòöôÓÒÖÔ/ooooOOOO/
            y/úùüûÚÙÜÛ/uuuuUUUU/
            y/ñÑ/nN/
            
            # Eliminar caracteres especiales
            s/[@#%&*¿?¡!$]//g
            
            # Eliminar paréntesis, corchetes, llaves
            s/[()\[\]{}]//g
            
            # Eliminar comillas y apóstrofes
            s/['\''"`]//g
            
            # Reemplazar espacios por guiones bajos
            s/ /_/g
            
            # Reemplazar múltiples guiones bajos por uno solo
            s/__+/_/g
            
            # Eliminar guiones bajos al inicio y final
            s/^_//
            s/_$//
        ')
        
        if [ "$nombre_original" != "$nuevo_nombre" ]; then
            echo "📁 Renombrando: \"$nombre_original\" -> \"$nuevo_nombre\""
            mv -- "$archivo" "$directorio/$nuevo_nombre"
            ((contador++))
        fi
    done
    
    echo "✅ Proceso completado. Se renombraron $contador archivos."
    
    if [ $contador -eq 0 ]; then
        echo "💡 No se encontraron archivos que necesiten renombrarse."
    fi
}

# Alias para uso rápido
alias lnombres='limpiar-nombres'
alias limpiar-archivos='limpiar-nombres'

Añadiendo el script al archivo ~/.bashrc o ~/.zshrc (en mi caso uso ZSH) podremos usarlo en cualquier directorio sin necesidad de tener el script.sh dentro.

/home/user/Descargas/Fotos/limpiar-nombres

Ahora que se habla tanto de productividad, tanto Linux como la terminal, cada día mejoran la mía.

Publicado en: Linux Etiquetado como: linux, tutoriales

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Firefox, el último reducto de la web libre y los estándares de Internet
  • .htaccess por defecto para WordPress
  • Aplicar noindex, nofollow y noarchive a todo WordPress excepto a la página de inicio
  • Cómo aplicar un CSS personalizado en Elementor sin que afecte al modo edición
  • Cambia el texto «Sin existencias» de WooCommerce cuando un producto está agotado

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Cómo optimizo imágenes sin usar editores de imágenes
  • Firefox, el último reducto de la web libre y los estándares de Internet
  • .htaccess por defecto para WordPress
  • Aplicar noindex, nofollow y noarchive a todo WordPress excepto a la página de inicio
  • Cómo aplicar un CSS personalizado en Elementor sin que afecte al modo edición

Comentarios recientes

  1. Brandon Portes en Taller de verano de WooCommerce #1
  2. Sebastian en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  3. Rigol en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora
  4. dani.sanchez en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  5. rikylinux en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Opinión
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress
Medium banner says Support Inkscape
+ +

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Alojado con energía 100% verde

Dani Sánchez © 2025 · Política de privacidad · Política de cookies