Renombrado de Archivos en Linux: Script Bash para Añadir Prefijo con Cadena Aleatoria y Fecha, Manteniendo la Extensión Original

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

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

# Cambiar a la carpeta especificada
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")

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

# Extraer el nombre base del archivo sin extensión
nombre_base="${archivo%.*}"

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

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

Este script en Bash renombra todos los archivos en un directorio específico, añadiendo un prefijo que incluye una cadena aleatoria, la fecha y hora actuales, y manteniendo la extensión original del archivo. Aquí está el desglose del funcionamiento del script:

  1. DIRECTORIO: Define la ruta del directorio donde se encuentran los archivos que deseas renombrar. Esta ruta debe ser ajustada a la ubicación deseada.
  2. Cambio de Directorio: El comando cd "$DIRECTORIO" || exit cambia el directorio actual a la ubicación especificada. Si no se puede acceder a la carpeta, el script se detiene con exit.
  3. Recorrido de Archivos: Se utiliza un bucle for para recorrer todos los archivos en el directorio. El comodín * selecciona todos los archivos presentes.
  4. Verificación de Archivos: El script verifica si cada ítem en el directorio es un archivo regular con if [ -f "$archivo" ]; then. Esto asegura que solo se procesen archivos y no directorios u otros tipos de ítems.
  5. Generación de Cadena Aleatoria: Se genera una cadena aleatoria de 6 caracteres alfanuméricos con el comando tr -dc A-Za-z0-9 </dev/urandom | head -c 6. Esto añade un componente único al nuevo nombre del archivo.
  6. Fecha y Hora: El script obtiene la fecha y hora actuales en formato YYYYMMDD-HHMMSS utilizando date +"%Y%m%d-%H%M%S". Esto asegura que el nombre del archivo también indique el momento exacto de su renombrado.
  7. Obtención de la Extensión: Para mantener la extensión original del archivo, se extrae utilizando ${archivo##*.}, que toma todo lo que sigue al último punto en el nombre del archivo.
  8. Nombre Base del Archivo: Se extrae la parte del nombre del archivo sin la extensión usando ${archivo%.*}. Esto es útil si el archivo original tiene un nombre significativo que quieras mantener en parte.
  9. Construcción del Nuevo Nombre: Se combina la cadena aleatoria, la fecha y hora, el nombre base y la extensión original en la variable nuevo_nombre, formando el nombre completo y único del archivo.
  10. Renombrado del Archivo: Finalmente, mv "$archivo" "$nuevo_nombre" realiza el cambio de nombre del archivo, aplicando el nuevo nombre generado.

Ejemplo de funcionamiento:

  • Si tienes un archivo llamado foto_vacaciones.jpg, después de ejecutar el script podría ser renombrado a algo como a1B2c3_20240809-141532_foto_vacaciones.jpg, donde:
    • a1B2c3 es la cadena aleatoria.
    • 20240809-141532 es la fecha y hora en que el archivo fue renombrado.
    • foto_vacaciones.jpg es el nombre original con la extensión preservada.

Este enfoque es útil para organizar archivos de manera única y ordenada, sin perder la extensión original que define el tipo de archivo.