使用今天的日期计算文件

时间:2017-09-05 19:28:03

标签: unix grep

我正在尝试使用格式计算具有今天日期的文件的出现次数 submission.YYMMDDS.csv ...其中:

YY =当前年份,不包括世纪(例如2017年为17)

MM =当前月份数(例如7月07日)

DD =月内的当前日期数(例如,该月的第21天为21日)

S = YYMMDD中的文件序列号,从0开始(例如,如果文件是为此YYMMDD值创建的第二个文件,则为1)

这有效:

ls *.csv | grep -oc  "submission.$( date +%y%m%d)"

但我真的想在grep中加入“S.csv”(S是一个通配符序列号)

这不起作用:

ls *.csv | grep -oc  "submission.$( date +%y%m%d)" *.csv

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果你的shell是bash,请给出这个目录和日期:

$ ls
submission.1709043.csv  submission.1709052.csv  submission.1709053.csv
$ date
Tue Sep  5 17:26:14 CDT 2017

你应该这样做:

$ shopt -s nullglob
$ files=( submission.$(date +%y%m%d)[0-9]*.csv )
$ echo "${#files[@]}"
2
$ shopt -u nullglob

nullglob是如果目录为空则不会得到1的计数。这甚至适用于包含换行符或任何其他空格的文件名。