週にどのくらいのファイルが作成されたかを確認するには?

週にどのくらいのファイルが作成されたかを確認するには?

週にどのくらいのファイルが作成されたかを確認するには?状況:システムが正常に実行されている場合、システムは毎週4つのファイルを生成します。たとえば、

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

それでは、システムが正常に動作していることを確認するために、システムが毎週この4つのファイルを生成することを確認するシェルスクリプトを作成したいと思います。しかし、どのように書くのかわかりません...

答え1

$ 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

これにより、4つのファイルがない日付を簡単に見つけることができます。


最初のコメントへの回答:

$ 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

このバージョンでは、数値以外のすべての文字列をフィールド区切り文字として受け入れるため、日付の前のプレフィックスにも数字が含まれていると失敗します。

答え2

Unix / Linuxファイルシステムでは、ファイル属性には通常作成時間フィールドは含まれません(たとえば、VFATおよびNTFSにあります)。

したがって、ファイル名の日付パターンに依存できない場合は、前のファイル名のリストを維持し、先週のリストを今週のリストと比較する必要があります。

どちらの方法も、先週存在していたファイルが途中で削除され、再生成されたことを保証しません。状況を制限しなくなると、どのファイルが作成されたかを確認できません。

関連情報