Encontre e exclua diretórios mais antigos que o tempo?

2

Eu tenho um comando que estou usando para encontrar e excluir arquivos em um diretório mais antigo que um tempo especificado. O comando é:

sudo find /path/to/dir/* -daystart -mtime +7 -delete

Como posso modificar este comando para excluir diretórios e arquivos dentro do diretório especificado.

    
por liamTc 22.08.2012 / 01:54

3 respostas

5

Você provavelmente não deseja remover diretórios com base no tempo de modificação. O que você provavelmente quer fazer é remover um diretório, uma vez que não tem arquivos deixados nele.
Uma maneira de resolver isso seria o seguinte:

find /path/to/dir -type d -empty -exec rmdir {} \;

Se você tiver diretórios que são usados com freqüência, mas às vezes vazios, você pode alterar o comando para

find /path/to/dir -type d -empty -daystart -mtime +7 -exec rmdir {} \;

Isso só removerá o diretório se ele não corresponder aos critérios de tempo de modificação, além de estar vazio.

    
por 22.08.2012 / 02:18
1

Este é o comando que eu executo para excluir arquivos:

find /path/to/files* -mtime +1 -exec rm {} \;

O seguinte não foi testado, mas tenho certeza que você poderia modificá-lo para excluir diretórios fazendo algo parecido com essa exclusão recursiva:

find /path/to/dir -mtime +1 -exec rm -rf {} \;
    
por 22.08.2012 / 02:11
0
find $DNLD_DIR/* -mtime +7 -type d -print0 | xargs -0 rm -rf

remove o diretório sem verificar se está vazio ou não. Eu uso ele para remover diretórios que eu criei com o nome do diretório como yyyymmdd e eu sei que eu quero que tudo nele seja limpo, incluindo o diretório.

Tenha muito cuidado ao usar isso, no entanto. Toda vez que você executar find | xargs rm -rf , poderá arruinar seu dia se as condições find estiverem incorretas.

    
por 09.07.2014 / 05:28

Tags