Mantenha apenas as duas últimas pastas no diretório

Mantenha apenas as duas últimas pastas no diretório

Eu tenho um diretório que contém as seguintes pastas.

Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210

Quero manter apenas as duas pastas mais recentes e excluir o restante. A pasta está neste formato: Data-YYYY-MM-DD-HHMM.

Existe uma maneira de comparar os nomes das pastas, manter os mais recentes e excluir o restante? Posso acomodar isso mais tarde em meu script de shell.

Responder1

Presumo que o nome dos diretórios também seja a data e hora de sua criação. Se for assim então você pode usareupara listar os arquivos de acordo com o horário de modificação dos diretórios.

Isso listará os diretórios na ordem dos mais recentes primeiro

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt 

Para excluir todos os diretórios, exceto os 2 arquivos mais recentes: –

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r

Observação:Primeiro, experimente em um ambiente de teste e confirme minuciosamente se isso é exatamente o que você deseja realizar e também se esse script funciona com seu conjunto de diretórios.

informação relacionada