如何获取最高版本号的文件

如何获取最高版本号的文件
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

相关内容