Unix命令创建NEXT文件名。

时间:2014-05-02 06:45:36

标签: unix

在unix上,我有一个在不同时间段内随机创建的CSV文件列表,所有文件都具有相同的名称格式,例如:

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

根据当前时间戳,我是否有create NEXT个csv文件名的命令? 例如,对于上面的列表,我正在寻找"NYC_2014-05-01-002.csv"的内容。

谢谢,
约翰

1 个答案:

答案 0 :(得分:0)

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

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

为了避免多次调用date,我们可以将其分解为多行:

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

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

计算当前时间戳已存在于文件中的文件数(同样,假设列表位于 listfile

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

打印下一个文件名,它将是附加了count + 1的当前日期,我们将用零填充为三个字符:

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

您可以使用>> listfile重定向最终命令来更新列表文件