如何查看一周内创建了多少个文件?情况:如果系统正常运行,系统每周会创建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 上)。
因此,除非您可以依赖文件名中的日期模式,否则您必须保留以前的文件名列表,并将上周的列表与本周的列表进行比较。
这两种方法都不能保证上周存在的文件已被删除并在中间时间重新创建。如果情况没有进一步限制,您无法确定创建了哪些文件。