#!/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:
- DIRECTORIO: Define la ruta del directorio donde se encuentran los archivos que deseas renombrar. Esta ruta debe ser ajustada a la ubicación deseada.
- 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 conexit
. - Recorrido de Archivos: Se utiliza un bucle
for
para recorrer todos los archivos en el directorio. El comodín*
selecciona todos los archivos presentes. - 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. - 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. - Fecha y Hora: El script obtiene la fecha y hora actuales en formato
YYYYMMDD-HHMMSS
utilizandodate +"%Y%m%d-%H%M%S"
. Esto asegura que el nombre del archivo también indique el momento exacto de su renombrado. - 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. - 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. - 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. - 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 comoa1B2c3_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.