Como usar o comando find para executar duas condições no linux

0

Estou tentando excluir arquivos (arquivos de log) com mais de 5 dias e preciso manter um arquivo específico sem excluí-lo, tentei usando

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

Mas isso não é bem sucedido. O sistema operacional que estou usando é o Centos 7.

    
por Sineth 13.10.2015 / 15:21

1 resposta

2

Como você pode ver, criei para testar a seguinte estrutura:

mkdir test && cd test && touch file1 file2 file3 lol test2
touch -t 200805101024 file*

obtendo isso:

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 May 10  2008 file1
-rw-r--r-- 1 root   root      0 May 10  2008 file2
-rw-r--r-- 1 root   root      0 May 10  2008 file3
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

E depois de executar seu comando correto:

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

A situação é a esperada:

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

Editar: Localizando informações sobre comandos ou parâmetros de comando:

Quando não tenho certeza sobre o comportamento de um determinado comando e / ou parâmetro, procedo da seguinte forma:

man find | less

então você pode procurar o que você está procurando dentro do manual do comando da seguinte forma:

  • digite /
  • escreva os termos de pesquisa que eu acredito que sejam -mtime
  • , em seguida, você pode ir para a próxima ocorrência de seus termos de pesquisa, digitando N ou o anterior, digitando n

Descobri estas informações interessantes:

   -mtime n
          File's data was last modified n*24 hours ago.  See the comments for -atime to understand how  round‐
          ing affects the interpretation of file modification times.
    
por 13.10.2015 / 15:49