it-swarm-es.tech

Ordenar archivos por nombre como si fueran fechas

Tengo una secuencia de comandos bash de respaldo que agrupa todo en un tar.gz en un directorio de respaldo. Para un script de restauración, necesito poder seleccionar el único más nuevo de bash. el formato de mi carpeta de respaldo es backup/YYYY-MM-DD/HH-MM.tar.gz

estructura de archivo de ejemplo sería

/2016-03-08/1230.tar.gz
/2016-03-08/0615.tar.gz
/2016-03-07/0615.tar.gz
1
blipman17

Dado el nombre de archivo y la estructura del directorio, probablemente pueda usar find y sort:

find backup -type f -iname '*.tar.gz' | sort -r | head -1

Esto debería devolver el archivo más nuevo. Las fechas de la forma YYYY-MM-DD/HHMM ordenadas lexicográficamente también dan un orden ordenado con respecto al tiempo.

Para obtener este archivo en una variable, use la sustitución de comandos:

newest_file=$(find backup -type f -iname '*.tar.gz' | sort -r | head -1)
2
muru