Hoje, mostraremos um caminho pelo qual você pode exclua arquivos com mais de 'X' dias. Suponha que você queira excluir arquivos com mais de 7 dias, então este artigo o ajudará a fazer isso. O utilitário find permite que você passe alguns argumentos interessantes, incluindo um para executar outro comando em cada arquivo. Para descobrir quais arquivos são mais antigos do que um determinado número de dias, usaremos este encontrar utilidade e depois use o comando rm para excluí-los. A sintaxe do comando é a seguinte:
localizar / caminho / para / arquivos * -mtime +5 -exec rm {} \;
Não somos responsáveis por nenhuma perda de dados que possa ocorrer. Recomendamos você para o liste os arquivos e verifique antes de excluí-los, executando o seguinte comando:
encontre / caminho / para / arquivos * -mtime +5 -exec ls {} \;
Nota: Existem espaços entre rm, {} e \;

Explicação do comando:
O primeiro argumento no comando acima é o caminho para os arquivos. O segundo argumento é -Mtime é usado para especificar quantos dias o arquivo tem. Se você inserir +5, encontrará arquivos com mais de cinco dias. O último argumento é -Exec permite que você passe um comando como rm. o {}\; no final é necessário terminar o comando.
Isso deve funcionar em quase todas as versões do Linux como Ubuntu, Fedora, Red Hat, Suse, etc. Se você estiver enfrentando algum problema que pareça impossível aqui, deixe-nos saber nos comentários abaixo.
Suraj Salunkhe
Eu usei esse truque! Truque incrível! Obrigado por compartilhar um truque tão bom :)
Amruta Patil
Sim, usei este comando durante a sessão de prática do RHCE.
Ben
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Crufted algo fora de sua sugestão aqui. Um método para fazer uma lista de arquivos de texto simples de arquivos com cinco dias. Mais fácil de manter um registro para visualização antes de remover arquivos. Os usuários podem então usar cat, vi, vim, gedit, emacs para ver o que eles podem jogar fora.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Dividindo-o ./ é o diretório atual. Encontrar usando um diretório atual geralmente é mais seguro do que usar o / cannon. >> anexa a um arquivo, se ele não existir, ele será criado.
Até pensei que pode ser útil como apelido. Provavelmente poderia / deveria portá-lo para um script de shell primeiro. Embora seja preguiçoso, estou atrasado aqui.
Ben Piper
Obrigado! Usei essa sintaxe em um cron job.
Vivian
A boa dica para excluir arquivos com mais de alguns dias. No entanto, se sua lista de argumentos for longa (acho que o máximo é 65535 ou algo parecido), isso não funcionará.
Eu tenho um script personalizado que faz o trabalho:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
echo "$fstamp"
fi
fi
Feito.
Rajesh Namase
Obrigado por dar o script.
Vivian
De nada, Namase.
Chame o script assim:
./scriptname.sh DEL numDays
Se numDays não for especificado, ele usará no mínimo 1, portanto, certifique-se de especificar numDays. Não sou responsável pela forma como você usa este script e por qualquer perda de dados que possa ocorrer.
Pawan
se eu quiser Excluir diretórios e arquivos de 30 dias para minha máquina remota e uma coisa excluindo 1 e 2 ou 3 diretórios e então como posso fazer isso .. ?? Por favor, compartilhe seus pensamentos.
Ali
Eu uso essa técnica ela é muito útil para deletar arquivo trc no oracle
Ethan
Obrigado por compartilhar este comando útil para todos os usuários. Podemos facilmente excluir arquivos mais antigos no Linux. Também estou procurando e finalmente encontrei a solução aqui.
Greg
Isso também obtém arquivos em subdiretórios? Se sim, como eu faria para não acontecer?
find / home / greg / logs -tipo f -mtime +5 -exec rm {};
Suraj Salunkhe
Eu estava procurando por esse comando. Realmente util. E obrigado por compartilhar o roteiro, Vivian.