.
Como você sabe, às vezes os dumps de log são compartilhados entre os usuários para processamento adicional. Algumas pessoas armazenam o log para uso posterior, mesmo após a conclusão do trabalho.
Em vez de se tornar útil, tornou-se um grande lixo, que precisa ser removido do sistema.
Quando você olha para o arquivo, há um grande número de arquivos disponíveis e, entre eles, você está procurando remover o arquivo que é X dias mais antigo, ou talvez X vezes mais antigo, do que quando você acessou ou modificou o arquivo pela última vez.
Se você tiver um tipo semelhante de requisito, acredito que este artigo certamente o ajudará.
Qual comando você usa para esta tarefa?
Nesse tipo de cenário, a melhor opção é utilizar o comando find, que primeiro localizará o arquivo de acordo com uma das seguintes opções: -amin, -atime
, -cmin
, -ctime
, -mmin,
e -mtime
.
Depois que o comando find encontrar o arquivo de acordo com os parâmetros definidos, você poderá usar o -delete
opção ou então use xargs
para remover o arquivo do seu sistema.
Bem simples, certo? Vamos pegar alguns dos comandos baseados em cenários.
Localizar e excluir arquivos com mais de X ou N dias
Digamos que eu queira encontrar e remover um arquivo que não usei por mais de sete dias. Neste caso, eu diria -atime
é a hora da necessidade, então deixe-me apresentá-lo primeiro à sintaxe de comando. Em seguida, invocaremos o comando no sistema.
$ find /specify-path/ -atime +N
find
: todos vocês estão bem cientes do programa find/specify/path/
: defina o caminho onde você deseja executar o comando find-atime
: o arquivo foi acessado há menos de, mais de ou exatamente 24 horas atrás-
+N
: mencione o número de dias no formato do dia
O comando acima mostrará o nome do arquivo que não foi acessado por mais de N número de dias.
Se você tiver certeza do comportamento do comando acima, precisará adicionar mais algumas linhas ao comando padrão para executar o função rm no resultado filtrado, e assim que o arquivo for excluído do sistema, seus nomes de arquivo serão impressos.
$ find /specify-path/ -atime +N -exec rm {} ; -print
É sempre recomendável que você verifique primeiro o resultado do comando find e, depois disso, execute a função rm para evitar qualquer perda de dados.
Leia também: Para onde vão os arquivos quando o comando rm é executado?
Para explicar melhor para você, deixe-me criar alguns arquivos com mais de 7 dias usando o touch
comando. O comando touch normalmente é usado para criar um novo arquivo, mas você também pode usá-lo para alterar os tempos de acesso e modificação.
No entanto, podemos fazer isso com nosso arquivo antigo, mas em vez de fazer isso, ele crie um novo arquivo usando o -t
(timestamp) usando o comando a seguir.
$ touch -t 202208281024 sample_A
$ touch -t 202208291024 sample_B
$ touch -t 202208301024 sample_C
$ touch -t 202208311024 sample_D
$ touch -t 202209011024 sample_E
$ touch -t 202209021024 sample_F
$ touch -t 202209031024 sample_G
$ touch -t 202209041024 sample_H
Se você quiser aprender a decodificar o carimbo de data/hora, confira este artigo:
Depois disso, execute uma parte do comando para ver os nomes dos arquivos e, quando estiver satisfeito com os nomes dos arquivos, adicione a outra parte do comando para ver os resultados.
$ find . -atime +7
Abaixo está a saída do comando acima.
Se você quiser ter mais certeza sobre a saída, você pode usar o stat
comando para verificar o último horário de acesso executando o comando abaixo:

Uma vez que você tenha certeza do resultado, você pode executar o comando para remova o arquivo do seu sistema usando o comando abaixo, que encontrará novamente o nome do arquivo com base em sua linha do tempo, removerá o arquivo e imprimirá o nome do arquivo.
$ find . -atime +7 -exec rm {} ; -print
O comportamento do comando acima:

Você pode tornar o comando acima mais robusto adicionando o tipo de arquivo.
Como você sabe, estamos procurando por arquivos regulares que não foram usados por mais de 7 dias, e não quero tocar em nenhum diretório que não tenha sido acessado em uma semana. Nesse caso, definitivamente preciso mencionar explicitamente o tipo de arquivo.
$ find . -atime +7 -type f -exec rm {} ; -print
Alternativamente, você também pode usar o -newerXY
opção para remover um arquivo com base na data especificada. XY
precisa ser substituído pelos seguintes caracteres: 'a'
(Acesso),'B'
(nascimento),'c'
(mudança de inode),'m'
(modificado),'t'
(Tempo) referência.
Você pode seguir a sintaxe abaixo para remover um arquivo com base em sua preferência usando o formato de data normal.
$ find /specify-path/ -type f -not -newerat "YYYY-MM-DD HH:MI:SS" -delete -print
Digamos que eu queira remover todos os arquivos que foram acessados antes 31-08-2022 usando o -não e -novo opções.
Para este cenário, criei um comando que parece perfeito para mim. Eu sei que você está perguntando sobre o tempo, mas você pode evitar isso.
$ find . -not -newerat "2022-08-31" -delete -print
O comportamento do comando acima.

Localizar e excluir arquivo que foi modificado em X minutos
Pode haver um momento em que você deseja remover arquivos com base no horário modificado, como remover todos os arquivos do diretório atual que foram acessados nos últimos X minutos.
Digamos que eu queira remover os arquivos que foram modificados nos últimos 30 minutos. Nesse momento, você deve executar o comando abaixo, que excluirá todos os arquivos que foram modificados recentemente.
$ find . -mmin -30 -type f -delete -print
O comportamento do comando acima.

Em vez de remover diretamente o arquivo, você pode primeiro verificar o resultado do comando find invocando o código abaixo. Depois disso, você pode invocar o comando acima para remover o arquivo.
$ find . -mmin -30
Você pode até mesmo tornar seu resultado de saída conciso usando –mmin como condicional, mas como posso fazer –mmin como condicional? É simples vamos dar um exemplo.
Digamos que você queira encontrar um arquivo que foi modificado nos últimos 50 minutos do período de tempo e, no mesmo período, também queira saber qual arquivo foi modificado recentemente em 30 minutos.
Nesse caso, você deve usar o seguinte comando:
$ find . -mmin -50 -mmin +30
O comportamento do comando acima.

Leia também: Como encontrar o tamanho total de um diretório no Linux
Encontre e exclua arquivos com mais de X dias com um prompt
Não é seguro correr para executar rm
ou use o -delete
opção até ter certeza se o find the result encontrou o resultado certo para você.
E é comum cometermos erros ao digitar o nome do arquivo ou usar os parâmetros errados, o que removerá todos os arquivos do atual e dos subdiretórios porque o comando find verifica o padrão especificado recursivamente em todo o caminho especificado.
Acredito que você entendeu o que quero dizer. Portanto, é melhor primeiro verificar o resultado usando -imprimir, ou então você pode usar o comando abaixo, que pedirá sua permissão antes de removê-lo do seu sistema.
$ find . -atime +7 -exec rm -i {} ; -print
O comportamento do comando acima.

Leia também: 20+ Comando Find que você pode usar diariamente
Embrulhar
É tudo por agora!
Bem, neste artigo você aprendeu como encontrar e remover um arquivo que não é acessado há muito tempo usando -atime e outras várias opções.
Você pode aprender mais sobre o comando find no manual, que pode ser lido no terminal digitando o comando simples man find
.
Se este artigo te ajudou, deixe um comentário sobre sua experiência. Com isso, estou encerrando este artigo. Voltaremos a nos encontrar com um novo tema. Até lá, Tchau Tchau!

Um homem com um efusivo tecnológico que explorou algumas das incríveis coisas tecnológicas e está explorando mais. Enquanto avançava, tive a chance de trabalhar no desenvolvimento Android, Linux, AWS e DevOps com várias ferramentas de código aberto.
.