Mantenha apenas as últimas duas pastas no diretório

0

Eu tenho um diretório que possui 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 últimas duas pastas e excluir o restante. A pasta está neste formato: Data-YYYY-MM-DD-HHMM .

Existe alguma maneira de comparar os nomes das pastas e manter as últimas e excluir o resto? Eu posso acomodar isso mais tarde no meu script de shell.

    
por mahesh 11.07.2014 / 08:14

1 resposta

1

Eu assumo que o nome dos diretórios é também o registro de data e hora de sua criação. Se é assim, então você pode usar ls para listar os arquivos de acordo com a hora da modificação dos diretórios.

Isso listará os diretórios na ordem de primeiro mais recente

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 se isso é exatamente o que você deseja executar também se esse script funcionar com seu conjunto de diretórios.

    
por 11.07.2014 / 15:23