如何查看一周内创建了多少个文件?

如何查看一周内创建了多少个文件?

如何查看一周内创建了多少个文件?情况:如果系统正常运行,系统每周会创建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

现在,我想编写一个shell脚本,每周检查系统是否创建这四个文件,以确保系统正常运行。但是,我不知道怎么写...

答案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 上)。

因此,除非您可以依赖文件名中的日期模式,否则您必须保留以前的文件名列表,并将上周的列表与本周的列表进行比较。

这两种方法都不能保证上周存在的文件已被删除并在中间时间重新创建。如果情况没有进一步限制,您无法确定创建了哪些文件。

相关内容