Automatización de Renombrado de Archivos con un Script Bash Manteniendo la Extensión

Artículos Guías Manuales Sistemas Linux Windows Binario 0

En la administración de sistemas y tareas diarias relacionadas con archivos, a menudo surge la necesidad de renombrar archivos de manera sistemática. Esto puede incluir agregar marcas de tiempo, cadenas aleatorias, o modificar sus nombres por completo mientras se preserva la extensión. A continuación, exploraremos un script Bash diseñado para realizar estas tareas de forma eficiente y automática.

Objetivo del Script

El objetivo del script es recorrer todos los archivos en un directorio especificado y renombrarlos con un nuevo formato que incluye:

  1. Una cadena aleatoria de 6 caracteres alfanuméricos.
  2. La fecha y hora actuales en el formato YYYYMMDD-HHMMSS.
  3. La extensión original del archivo.

Esto puede ser útil en situaciones donde se requiere garantizar nombres únicos para los archivos o estandarizar su nomenclatura.

Código del Script

A continuación se presenta el código del script:

#!/bin/bash

# Directorio que contiene los archivos
DIRECTORIO="/ruta/a/tu/carpeta"

# Cambiar al directorio especificado
cd "$DIRECTORIO" || exit

# Recorrer todos los archivos en el directorio
for archivo in *; do
    # Verificar si es un archivo regular
    if [ -f "$archivo" ]; then
        # Generar una cadena aleatoria de 6 caracteres
        cadena_aleatoria=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 6)

        # Obtener la fecha y hora actuales en el formato YYYYMMDD-HHMMSS
        fecha_hora=$(date +"%Y%m%d-%H%M%S")

        # Obtener solo la extensión del archivo
        extension="${archivo##*.}"

        # Construir el nuevo nombre del archivo con la extensión
        nuevo_nombre="${cadena_aleatoria}_${fecha_hora}.${extension}"

        # Renombrar el archivo
        mv -- "$archivo" "$nuevo_nombre"
    fi
done

Explicación del Funcionamiento

  1. Definir el Directorio: El script comienza definiendo el directorio donde se encuentran los archivos que se desean renombrar. Esto se especifica en la variable DIRECTORIO.
  2. Cambiar al Directorio: Con el comando cd, el script se posiciona en el directorio especificado. Si el cambio de directorio falla, el script se detiene gracias a la instrucción || exit.
  3. Recorrer los Archivos: Usando un bucle for, el script examina todos los elementos dentro del directorio. La condición [ -f "$archivo" ] asegura que solo se procesen archivos regulares, ignorando directorios u otros tipos de elementos.
  4. Generar la Cadena Aleatoria: El comando tr genera una cadena de 6 caracteres aleatorios utilizando /dev/urandom, una fuente de números aleatorios seguros.
  5. Obtener la Fecha y Hora: Con el comando date, el script genera la fecha y hora actuales en el formato YYYYMMDD-HHMMSS.
  6. Extraer la Extensión: Usando la sintaxis de manipulación de cadenas en Bash, el script extrae la extensión del archivo original.
  7. Construir el Nuevo Nombre: Combina la cadena aleatoria, la fecha y hora, y la extensión original para formar el nuevo nombre del archivo.
  8. Renombrar el Archivo: El comando mv se utiliza para renombrar el archivo al nuevo nombre generado.

Consideraciones Adicionales

  • Seguridad: Asegúrate de que el directorio especificado no contenga archivos críticos que podrían ser renombrados accidentalmente.
  • Validación: Puedes agregar validaciones adicionales, como verificar extensiones específicas o excluir ciertos archivos.
  • Respaldos: Antes de ejecutar el script, es recomendable realizar un respaldo de los archivos para evitar pérdida de información.

Conclusión

Este script Bash proporciona una manera simple y eficaz de renombrar archivos en masa con nombres únicos y bien organizados. Su adaptabilidad permite ajustarlo a diferentes necesidades, como agregar prefijos personalizados o filtrar por tipos de archivos. La automatización de tareas repetitivas como esta no solo ahorra tiempo, sino que también reduce errores manuales.