date-order-files vs year-order-dirs

index | about | archive | charlas | docs | links

dot | git | img | plt | tty | uml

ranger-date-order-files-vs-year-order-dirs.png

amo el orden pero soy un caos!

Trabajo en una terminal, tty, consola o como prefieras nombrar al shell, en mi caso uso BASH y cuando estoy en entorno X uso awesome 1 asi que no cuento con un escritorio con íconos a organizar, pero en la oscuridad de la terminal puede que los archivos estén un tanto desordenados!

YYYY-MM-DD

Gracias al formato ISO 8601 2, por lo general la mayoría de los archivos los guardo en con prefijo YYYY-MM-DD entonces, con solo listarlos ya estaría ordenados! y sería muy fácil filtrar usando grep, por ejemplo, para ver los archivos de hoy se podría ejecutar:


ls | grep $(date +%F)

…y si quisieramos los archivos de ayer?:


ls | grep $(date +%F -d yesterday)

too many files…

Pero si hay cientos o miles de archivos en un directorio, termina resultando un poco molesto de todas maneras, por ejemplo en el directorio donde guardo los screenshots un posible estado sería el siguiente:


# ls

2023-05-10-103126.png
2023-05-10-103557.png
2023-05-10-104023.png
2023-05-10-104027.png
2023-05-10-111012.png
2023-05-10-112947.png
2023-05-10-113858.png
2023-05-10-113934.png
2023-05-10-115924.png
2023-05-10-120143.png
2023-05-10-120537.png
2023-05-17-175542.png
2023-05-17-180737.png
2023-05-18-115418.png
2023-05-18-115840.png
2023-05-18-131556.png
2023-05-20-104557.png
2023-05-23-234549.png
2023-05-24-144143.png
2023-05-25-001043.png

date-order-files

Basta ejecutar date-order-files 3 para que se creen directorios con formato YYYY-MM-DD y todos los archivos coincidentes se auto-ordenen:


# date-order-files

# ls -1

2021/
2022/
2023/
2023-04-30/
2023-05-03/
2023-05-04/
2023-05-05/
2023-05-08/
2023-05-09/
2023-05-10/
2023-05-11/
2023-05-12/
2023-05-15/
2023-05-16/
2023-05-17/
2023-05-18/
2023-05-19/
2023-05-20/
2023-05-22/
2023-05-23/
2023-05-24/
2023-05-25/
2023-05-29/

year-order-dirs

Y si queremos ordenar directorios por año, basta ejecutar year-order-dirs 4 y listo, se auto-ordenan los directorios:


# year-order-dirs

# ls

2021/
2022/
2023/
2023-05-30-195020.png

Ambos comandos por defecto excluyen los archivos del día, para tener lo último en la raíz del directorio de trabajo siempre a mano.

Los scripts estan en el repo bin-bash-utils 5.

ChangeLog

Notas al pie de página: