Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


15/03/2025

Renombrando Archivos PDF con Fecha de Modificación en Linux

Renombrando Archivos PDF con Fecha de Modificación en Linux

¿Tienes una colección de archivos PDF desorganizados y quieres renombrarlos automáticamente con un formato específico? En este post, te mostraré cómo crear un script en Bash que selecciona un directorio, encuentra todos los archivos `.pdf` que no tengan el prefijo `YYMMDD-nombre.pdf`, y los renombra usando la fecha de modificación del archivo. Este formato es útil para organizar documentos de manera cronológica.

Requisitos

  • Un sistema Linux (Ubuntu, Debian, Fedora, etc.).
  • Conocimientos básicos de terminal y Bash.
  • Permisos de escritura en el directorio que deseas procesar.

Introducción

En este post, comparto un script en Bash que automatiza el renombrado de archivos PDF en un directorio específico. El objetivo es identificar aquellos archivos que no tienen el prefijo `YYMMDD-` (donde `YY` son los últimos dos dígitos del año, `MM` el mes de 01 a 12, y `DD` el día de 01 a 31) y renombrarlos usando su fecha de modificación en ese formato. Esto es útil para organizar documentos, como trabajos finales o reportes, manteniendo un estándar claro basado en metadatos del archivo.

El Script

Aquí está el script Bash que realiza esta tarea:

#!/bin/bash

# Script para renombrar archivos PDF con fecha de modificación en formato YYMMDD-nombre.pdf

# Verificar si se proporcionó un directorio como argumento
if [ $# -ne 1 ]; then
    echo "Uso: $0 <directorio>"
    echo "Ejemplo: $0 /ruta/a/tus/pdfs"
    exit 1
fi

# Asignar el directorio proporcionado
DIRECTORY="$1"

# Verificar si el directorio existe
if [ ! -d "$DIRECTORY" ]; then
    echo "Error: El directorio '$DIRECTORY' no existe."
    exit 1
fi

# Cambiar al directorio especificado
cd "$DIRECTORY" || {
    echo "Error: No se pudo acceder al directorio '$DIRECTORY'."
    exit 1
}

# Contador para archivos procesados
COUNT=0

# Buscar archivos PDF y procesarlos
for file in *.pdf; do
    # Verificar si hay archivos PDF en el directorio
    if [ ! -e "$file" ]; then
        echo "No se encontraron archivos PDF en '$DIRECTORY'."
        exit 0
    fi

    # Comprobar si el nombre ya tiene el prefijo YYMMDD-
    if [[ "$file" =~ ^[0-9]{6}-.*\.pdf$ ]]; then
        echo "Saltando '$file': ya tiene el formato YYMMDD-."
        continue
    fi

    # Obtener la fecha de modificación del archivo (YYMMDD)
    MOD_DATE=$(stat -c %y "$file" | cut -d' ' -f1 | sed 's/-//g' | cut -c3-8)

    # Construir el nuevo nombre con la fecha
    NEW_NAME="${MOD_DATE}-${file}"

    # Renombrar el archivo
    if mv -n "$file" "$NEW_NAME"; then
        echo "Renombrado: '$file' -> '$NEW_NAME'"
        ((COUNT++))
    else
        echo "Error al renombrar '$file'. Puede que '$NEW_NAME' ya exista."
    fi
done

# Resumen final
echo "Proceso completado. Archivos renombrados: $COUNT."

Explicación del Script

  • Línea inicial: `#!/bin/bash` indica que es un script Bash.
  • Verificación de argumentos: Comprueba que se pase un directorio como parámetro (`$1`), mostrando un mensaje de uso si falta.
  • Validación del directorio: Asegura que el directorio exista y sea accesible.
  • Bucle sobre PDFs: Itera sobre todos los archivos `.pdf` en el directorio:
    • Si no hay PDFs, informa y termina.
    • Si el archivo ya tiene el prefijo `YYMMDD-` (ej. `250315-documento.pdf`), lo salta.
    • Usa `stat -c %y` para obtener la fecha de modificación (formato `YYYY-MM-DD`), extrae `YYMMDD` con `sed` y `cut`.
    • Renombra con `mv -n` (sin sobrescribir si ya existe).
  • Contador: Lleva la cuenta de archivos renombrados y muestra un resumen.

Uso del Script

  1. Guarda el script como `renamepdfs.sh`.
  2. Dale permisos de ejecución:

    chmod +x rename_pdfs.sh
    
  3. Ejecútalo especificando un directorio:

    ./rename_pdfs.sh /ruta/a/tus/pdfs
    

    Ejemplo de salida:

    Saltando '250314-informe.pdf': ya tiene el formato YYMMDD-.
    Renombrado: 'documento.pdf' -> '250315-documento.pdf'
    Proceso completado. Archivos renombrados: 1.
    

Notas y Precauciones

  • Fecha de modificación: Depende de la última vez que el archivo fue modificado, no de su creación. Si necesitas la fecha de creación, ajusta usando `stat -c %w` (si el sistema lo soporta).
  • Colisiones: Usa `-n` en `mv` para evitar sobrescribir archivos existentes; revisa manualmente si hay errores.
  • Portabilidad: Probado en sistemas Linux con `stat` de GNU coreutils. En macOS, cambia `stat -c %y` por `stat -f %Sm`.

Conclusión

Este script es una herramienta práctica para mantener tus PDFs organizados con un estándar basado en fechas. Puedes adaptarlo para otros formatos (`.docx`, `.txt`) cambiando `*.pdf` por el patrón deseado. ¡Automatiza y simplifica tu gestión de archivos en Linux!

Categoría: Linux bash script pdf renombrar

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

Visit counter For Websites