2014-05-02 76 views
0

在Unix,我有那个在不同的时间段,随机生成CSV文件的列表,所有文件都是同一个名字的格式,如:Unix命令创建NEXT文件名。

"NYC_2014-04-29-001.csv, 
NYC_2014-04-30-001.csv, 
NYC_2014-04-30-002.csv, 
... 
NYC_2014-05-01-001.csv,". 

有没有我的命令createNEXT基于当前时间戳的csv文件名?
例如,对于上面的列表,我正在寻找"NYC_2014-05-01-002.csv"

感谢,
约翰

+0

什么是模式?每个日期总是有两个文件,'NYC_YYYY-MM-DD-001.csv'和'NYC_YYYY-MM-DD-002.csv',并且没有'...- 003.csv'? – savanto

回答

0

使用bash(假设你的名字的名单是在listfile中)的一行:

echo "NYC_$(date +%Y-%m-%d)-$(printf "%03d" $(($(grep -c $(date +%Y-%m-%d) listfile) + 1))).csv,"

为了避免多次调用date,我们可以打破该东西分成多行:

获取当前时间戳格式为t ØYYYY-MM-DD:

cur_date=$(date +%Y-%m-%d) 

计数的文件与文件(又已经是当前时间戳的数量,假设该列表是listfile中

count=$(grep -c ${cur_date} listfile) 

打印下一个文件名,这将是当前的日期与计数+ 1追加,我们将垫用零三个字符:

echo "NYC_${cur_date}-$(printf "%03d" $((${count} + 1))).csv," 

您可以更新listfile通过重定向使用最终命令>> listfile