在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"
的内容。
谢谢,
约翰
答案 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
重定向最终命令来更新列表文件