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:
- Una cadena aleatoria de 6 caracteres alfanuméricos.
- La fecha y hora actuales en el formato
YYYYMMDD-HHMMSS
. - 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
- 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
. - 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
. - 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. - Generar la Cadena Aleatoria: El comando
tr
genera una cadena de 6 caracteres aleatorios utilizando/dev/urandom
, una fuente de números aleatorios seguros. - Obtener la Fecha y Hora: Con el comando
date
, el script genera la fecha y hora actuales en el formatoYYYYMMDD-HHMMSS
. - Extraer la Extensión: Usando la sintaxis de manipulación de cadenas en Bash, el script extrae la extensión del archivo original.
- Construir el Nuevo Nombre: Combina la cadena aleatoria, la fecha y hora, y la extensión original para formar el nuevo nombre del archivo.
- 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.