Remove todos os arquivos criados antes de uma determinada data

23

Eu tenho um diretório contendo um grande número de arquivos (como logs para todos os dias do ano). Eu gostaria de remover todos os arquivos criados antes digamos 22/11. Como posso conseguir isso? Devo usar find e exec -rm ? Estou usando o ksh.

    
por user1058398 27.11.2013 / 13:47

3 respostas

30

Usar find ainda é a maneira preferida de excluir arquivos. Veja link para mais.

Uma maneira de fazer isso é criar um arquivo com o carimbo de data / hora nele. por exemplo

touch -t 201311220000 /tmp/timestamp

Agora, exclua os arquivos GNU find (assumindo no diretório atual) que correspondem ao registro de data e hora, por exemplo:

find . -type f ! -newer /tmp/timestamp -delete  

ou não é encontrado pelo GNU

find . -type f ! -newer /tmp/timestamp -exec rm {} \;
    
por 27.11.2013 / 14:46
18

Com GNU ou algum BSD find s:

find . ! -newermt 2013-11-22 ! -type d -delete

Observe que o horário da última modificação dos arquivos é verificado. Em alguns BSDs, você pode usar -newerBt no lugar de -newermt para verificar a hora do inode nascimento do arquivo, se estiver disponível.

    
por 27.11.2013 / 15:44
0
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;

exemplo:

find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;

Nesse caso, ele removerá todos os arquivos que iniciarem com "ORA_XEO" por mais de 15 dias.

    
por 06.10.2016 / 15:56