Script Bash para detectar um arquivo modificado ontem e verificar se seu tamanho está acima de um certo limite

1

Estou escrevendo um script para stat todos os arquivos em um diretório e, em seguida, localizo arquivos específicos que foram criados ontem e me digam se eles são maiores que um determinado tamanho ou não.

Então, basicamente, eu preciso disso para encontrar esse arquivo, que é um arquivo do tipo .gz (e deveria ter sido modificado pela última vez há pelo menos 24 horas) e verificá-lo para garantir que não esteja em um determinado número, digamos 4 kilobytes por exemplo. E se for, sob esse tamanho de 4 kilobytes, ele precisa ecoar "Falha" ou algo assim, e se estiver acima desse limite, ele precisa ecoar "Sucesso" ou algo semelhante.

Eventualmente, enviarei um e-mail se ele falhar ou for bem-sucedido.

Até agora eu tenho isso afirmando todos os arquivos e encontrar os que foram modificados nas últimas 24 horas, mas desde que eu sou tão novo, estou perdido neste momento:

for file in /*; do
  stat $file
done
find /* -mtime -1 -print

Eu tenho isso rodando todo o meu computador agora, mas eventualmente ele será executado em um diretório específico.

    
por Aiden Prohaska 17.06.2015 / 20:43

1 resposta

3

Você pode usar o find para tudo isso, incluindo o tamanho ( man find ):

 -size n[cwbkMG]
          File uses n units of space.  The following suffixes can be used:
          'b'    for  512-byte blocks (this is the default if no suffix is used)
          'c'    for bytes
          'w'    for two-byte words
          'k'    for Kilobytes (units of 1024 bytes)
          'M'    for Megabytes (units of 1048576 bytes)
          'G'    for Gigabytes (units of 1073741824 bytes)

Então você pode fazer:

find . -name "*.gz" -size -4k -mtime -1 -printf 'Failure %p\n'
find . -name "*.gz" -size -4k -mtime +1 -printf 'Success %p\n'
    
por 17.06.2015 / 20:49