Como posso verificar quantos arquivos foram criados em uma semana?

1

Como posso verificar quantos arquivos foram criados em uma semana? Situação: O sistema criará quatro arquivos a cada semana, se o sistema estiver funcionando normalmente. Por exemplo:

A_08-07-2015.csv
B_08-07-2015.csv
C_08-07-2015.csv
D_08-07-2015.csv

A_01-07-2015.csv
B_01-07-2015.csv
C_01-07-2015.csv
D_01-07-2015.csv

A_24-06-2015.csv
B_24-06-2015.csv
C_24-06-2015.csv
D_24-06-2015.csv
      ⋮

Agora, quero escrever um script de shell para verificar se o sistema criou esses quatro arquivos a cada semana para garantir que o sistema esteja funcionando normalmente. Mas eu não sei escrever ...

    
por kachan2011 08.07.2015 / 06:13

2 respostas

4

$ ls
A_01-07-2015.csv  B_01-07-2015.csv  C_01-07-2015.csv  D_01-07-2015.csv
A_08-07-2015.csv  B_08-07-2015.csv  C_08-07-2015.csv  D_08-07-2015.csv
A_24-06-2015.csv  B_24-06-2015.csv  C_24-06-2015.csv  D_24-06-2015.csv
$ ls | awk -F'[^0-9]' '{ print $5$4$3 }' | sort | uniq -c
      4 20150624
      4 20150701
      4 20150708
$ rm B_08-07-2015.csv
$ ls | awk -F'[^0-9]' '{ print $5$4$3 }' | sort | uniq -c
      4 20150624
      4 20150701
      3 20150708

Uma data que não tem 4 arquivos é fácil de ver dessa maneira.

Como resposta ao primeiro comentário:

$ touch {A,B_B,banana,popaye}_{01-07,08-07,24-06}-2015.lol.csv
$ ls
A_01-07-2015.lol.csv  banana_01-07-2015.lol.csv  B_B_01-07-2015.lol.csv  popaye_01-07-2015.lol.csv
A_08-07-2015.lol.csv  banana_08-07-2015.lol.csv  B_B_08-07-2015.lol.csv  popaye_08-07-2015.lol.csv
A_24-06-2015.lol.csv  banana_24-06-2015.lol.csv  B_B_24-06-2015.lol.csv  popaye_24-06-2015.lol.csv
$ ls | awk -F'[^0-9]+' '{ print $4$3$2 }' | sort | uniq -c
      4 20150624
      4 20150701
      4 20150708
$ rm B_B_08-07-2015.lol.csv 
$ ls | awk -F'[^0-9]+' '{ print $4$3$2 }' | sort | uniq -c
      4 20150624
      4 20150701
      3 20150708

Esta versão aceita todas as sequências de não-dígitos como separador de campo, por isso falhará se o prefixo em frente à data também contiver um dígito.

    
por 08.07.2015 / 07:25
4

Em atributos de arquivo de sistemas de arquivos Unix / Linux normalmente não incluem um campo de tempo de criação (como, por exemplo, em VFAT e NTFS).

Portanto, a menos que você possa confiar na data como padrões nos nomes dos arquivos, terá que manter uma lista de nomes de arquivos anteriores e comparar a lista da semana passada com a lista desta semana.

Nenhum dos métodos garante que um arquivo que existiu na semana passada foi excluído e recriado no tempo intermediário. Se as circunstâncias não forem restringidas, você não pode dizer quais arquivos foram criados com certeza.

    
por 08.07.2015 / 07:02