abc_efg_2015_hanshake_01.csv.gz
abc_efg_2015_hanshake_02.csv.gz
abc_efg_2015_hanshake_03.csv.gz
如何获取具有最高版本号的文件并将其存储在数组中。
答案1
将所有文件名放入一个数组中。您没有指定如何定义您感兴趣的文件名集。我假设它们具有共同的前缀和后缀。用所有文件名创建一个数组。
all=(abc_efg_2015_hanshake_*.csv.gz)
如果所有版本号都具有相同的长度(在您的示例中似乎就是这种情况,因为数字有前导零),则版本号最高的文件是数组的最后一个元素。数组中元素的个数为${#all[@]}
,数组从 0 开始编号,因此最后一个元素为 number $((${#all[@]}-1))
。
highest=${all[$((${#all[@]}-1))]}
如果版本号的长度不同,通常使用sort
对它们进行排序是最方便的。我假设文件名中没有换行符。在这里,我将文件名隔离为第一个之前的部分,但仅在第一个之前的.
最后一个之后。_
.
highest_version=$(printf '%s\n' abc_efg_2015_hanshake_*.csv.gz |
sed -e 's/\..*//' -e 's/.*_//' |
sort -n | tail -n1)
highest=abc_efg_2015_hanshake_${highest_version}.csv.gz