Classifique os arquivos por nome como se fossem datas

1

Eu tenho um script bash de backup que coloca tudo em um tar.gz em um diretório de backup. Para um script de restauração, eu preciso ser capaz de selecionar o mais novo single do bash. o formato da minha pasta de backup é backup/YYYY-MM-DD/HH-MM.tar.gz

a estrutura do arquivo de exemplo seria

/2016-03-08/1230.tar.gz
/2016-03-08/0615.tar.gz
/2016-03-07/0615.tar.gz
    
por blipman17 08.03.2016 / 21:52

1 resposta

2

Dado o nome do arquivo e a estrutura de diretório, você provavelmente pode usar apenas find e sort :

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

Isso deve retornar o arquivo mais novo. Datas da forma YYYY-MM-DD/HHMM classificadas lexicograficamente também dão uma ordem classificada em relação ao tempo.

Para obter este arquivo em uma variável, use o comando de substituição:

newest_file=$(find backup -type f -iname '*.tar.gz' | sort -r | head -1)
    
por muru 08.03.2016 / 22:25