バージョン番号が最も高いファイルを取得する方法

バージョン番号が最も高いファイルを取得する方法
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)

すべてのバージョン番号の長さが同じ場合(番号の前に0があるため、例の場合のようです)、バージョン番号が最も高いファイルは配列の最後の要素です。配列の要素数は、${#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

おすすめ記事