Logo

Mi Blog con Emacs y Esteroides

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

mybloggingnotes@gmail.com


17/03/2025

Opciones para Ordenar Downloads en Linux OSs

Introducción

Este documento ofrece métodos para organizar la carpeta ~/Downloads en Ubuntu, renombrando archivos con el prefijo YYMMDD_nombre (YY: últimos 2 dígitos del año, MM: mes 01-12, DD: día de modificación) y otras estrategias de ordenamiento. Las soluciones usan herramientas de terminal y Emacs.

Renombrar Archivos con YYMMDDnombre

Renombrar archivos según su fecha de modificación usando el formato solicitado.

Usando `find` y `mv` en la Terminal

  • Descripción: Busca archivos y los renombra con la fecha de modificación.
  • Comando:

    cd ~/Downloads
    find . -type f -exec sh -c 'mv "$1" "$(date -r "$1" +%y%m%d)_$(basename "$1")"' _ {} \;
    
  • Explicación:
    • find . -type f: Busca solo archivos (no directorios).
    • date -r "$1" +%y%m%d: Extrae la fecha de modificación (YYMMDD).
    • basename "$1": Conserva el nombre original.
  • Ejemplo: documento.pdf250316_documento.pdf (modificado el 16/03/2025).
  • Precaución: Haz una copia de seguridad antes (ej. cp -r ~/Downloads ~/Downloads_backup).

Script Bash para Mayor Control

  • Descripción: Script reutilizable con manejo de conflictos.
  • Implementación:

    cd ~/Downloads
    for file in *; do
        if [ -f "$file" ]; then
            prefix=$(stat -c %y "$file" | cut -d' ' -f1 | sed 's/-//g' | cut -c3-8)
            new_name="${prefix}_$file"
            if [ -e "$new_name" ]; then
                echo "Conflicto: $new_name ya existe, omitiendo..."
            else
                mv "$file" "$new_name"
            fi
        fi
    done
    
  • Uso: Guarda como rename_downloads.sh, da permisos con chmod +x rename_downloads.sh, y ejecuta con ./rename_downloads.sh.
  • Beneficio: Evita sobrescribir archivos con nombres duplicados.

Desde Emacs con Dired

  • Descripción: Usa Dired para renombrar manualmente o con un script.
  • Pasos:
    1. Abre Dired: C-x C-f ~/Downloads RET.
    2. Marca archivos con m.
    3. Ejecuta un comando shell en los marcados: ! for f in %f; do mv "$f" "$(date -r "$f" +%y%m%d)_$f"; done.
  • Alternativa con Elisp:

    (defun rename-downloads-yymmdd ()
      (interactive)
      (dired "~/Downloads")
      (dired-do-shell-command
       "mv ? $(date -r ? +%y%m%d)_?" nil
       (dired-get-marked-files)))
    
    • Añade a init.el y ejecuta con M-x rename-downloads-yymmdd.
  • Beneficio: Integración directa en Emacs.

Otras Opciones de Ordenamiento

Alternativas para organizar ~/Downloads más allá del renombramiento.

Clasificación por Tipo de Archivo

  • Descripción: Mover archivos a subcarpetas según extensión.
  • Comando:

    cd ~/Downloads
    mkdir -p Documents Images Videos Other
    find . -maxdepth 1 -type f -name "*.pdf" -exec mv {} Documents/ \;
    find . -maxdepth 1 -type f -name "*.jpg" -o -name "*.png" -exec mv {} Images/ \;
    find . -maxdepth 1 -type f -name "*.mp4" -o -name "*.mkv" -exec mv {} Videos/ \;
    find . -maxdepth 1 -type f -not -path "./*/*" -exec mv {} Other/ \;
    
  • Beneficio: Orden visual por categoría (ej. PDFs en Documents/).

Orden por Fecha en Subcarpetas

  • Descripción: Crear carpetas YYMMDD y mover archivos según modificación.
  • Comando:

    cd ~/Downloads
    find . -type f -exec sh -c 'mkdir -p "$(date -r "$1" +%y%m%d)"; mv "$1" "$(date -r "$1" +%y%m%d)/"' _ {} \;
    
  • Ejemplo: Archivos del 16/03/2025 van a 250316/.
  • Beneficio: Agrupación cronológica sin renombrar.

Automatización con `inotifywait`

  • Descripción: Monitorear descargas nuevas y organizarlas automáticamente.
  • Implementación:
    1. Instala inotify-tools: sudo apt install inotify-tools.
    2. Script:

      inotifywait -m ~/Downloads -e create -e moved_to |
          while read path action file; do
              prefix=$(date -r "$path$file" +%y%m%d)
              mv "$path$file" "$path${prefix}_$file"
          done
      
    3. Ejecuta con ./watch_downloads.sh & disown para que corra en segundo plano.
  • Beneficio: Orden en tiempo real.

Recomendaciones Generales

  • Copia de seguridad: tar -czf ~/downloads_backup.tar.gz ~/Downloads antes de pruebas.
  • Prueba primero: Usa echo en lugar de mv para simular (ej. echo mv "$file" "$new_name").
  • Integración con Emacs: Usa M-x shell o eshell para ejecutar comandos desde Emacs.

Conclusión

La opción 1.1 (find y mv) es la más simple y directa para renombrar con YYMMDD. Para automatización, usa 2.3 (inotifywait). Si prefieres carpetas, opta por 2.1 o 2.2. Combina según tus necesidades: renombrar + clasificar es una solución robusta.


Categoría: linux script bash ordenar tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

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

Visit counter For Websites