como excluir arquivos com um padrão de data específico [duplicado]

0

Na pasta /var/log/roler_t , temos os seguintes arquivos:

-rw-r--r-- 1 roler smike    37652 Jun 25 01:44 2018-06-23T02:KJU:00
-rw-r--r-- 1 roler smike    41742 Jun 25 01:45 2018-06-21T20:KJU:00
-rw-r--r-- 1 roler smike    36762 Jun 25 01:46 2018-06-22T08:KJU:00
-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    42751 Jun 25 01:48 2018-06-21T16:KJU:00
-rw-r--r-- 1 roler smike    34627 Jun 25 01:49 2018-06-22T23:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 2018-06-23T05:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 2018-06-22T20:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00
-rw-r--r-- 1 roler smike    36643 Jun 25 01:53 2018-06-22T01:KJU:00

Como podemos remover apenas os arquivos com mais de dez dias e um padrão de data específico, por exemplo 2018-06-23 .

Os resultados esperados são os seguintes:

os seguintes arquivos ficarão abaixo de /var/log/roler_t

-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00
    
por yael 13.09.2018 / 13:45

2 respostas

0

Você pode filtrar seus arquivos por data com o comando find .

Por exemplo:

find /var/log/roler_t -mtime +10

retorna todos os arquivos com data de modificação > 10 dias.

Da mesma forma, você pode usar sinalizadores como -atime (tempo de acesso), -ctime (tempo de alteração de status), mas acho que -mtime é o que você está procurando.

Se você quiser removê-los com um único comando (mas sugiro que você sempre verifique antes se os resultados de find são o que você espera):

find /var/log/roler_t -mtime +10 -exec rm {} \;
    
por 13.09.2018 / 13:53
0

Isso é semelhante à sua pergunta anterior, você pode conseguir isso da seguinte maneira

$ find /var/log/roler_t -mtime +10 -name "XXXX-XX-XX*"

em que XXXX-XX-XX é o registro de data que você está procurando. Se você sabe que o mês e o dia do ano correspondem à hora da modificação que você está procurando, você pode alterar o argumento para a opção -name para ser algo assim:

$find /var/log/roler_t -mtime +10 -name "'date -d'now - 10 days' +'%y-%m-%d'*"

para gerar automaticamente o prefixo do nome do arquivo, embora você precise jogar com o número de dias do comando date que você subtrai para processar o mtime e o datestamp com o que você precisa.

Se você quiser apenas corresponder os nomes dos arquivos que começam com uma string de data, como, por exemplo, '2018-09-13' então use o seguinte:

/var/log/roler_t -mtime +10 -name "[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]*"
    
por 13.09.2018 / 14:09