[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ファイル名にはインデックス番号やバージョン番号が含まれていることがしばしばあるが、 バージョン・ソートは、そうした状況に対処している。 通常のソートでは、1 文字づつ文字の比較を行うので、結果がこちらの期待する順番にならないことがよくあるのだ。 バージョン・ソートが特に役に立つのは、 インデックス番号やバージョン番号を名前に含むファイルがたくさんあるディレクトリを一覧するときである。
$ ls -1 $ ls -1v abc.zml-1.gz abc.zml-1.gz abc.zml-12.gz abc.zml-2.gz abc.zml-2.gz abc.zml-12.gz |
バージョン・ソートにおける文字列の比較は、次のように行われる。 ver1 と ver2 がバージョン番号で、prefix (前置部分) と suffix (後置部分) が文字列だとしよう (suffix は正規表現の ‘(\.[A-Za-z~][A-Za-z0-9~]*)*’ にマッチするもの)。その場合、ver1 < ver2 ならば、“prefix ver1 suffix” から構成される名前は “prefix ver2 suffix” より前に来る。
数字の部分の先行する 0 は無視されることにも注意していただきたい。
$ ls -1 $ ls -1v abc-1.007.tgz abc-1.01a.tgz abc-1.012b.tgz abc-1.007.tgz abc-1.01a.tgz abc-1.012b.tgz |
この機能は gnulib の filevercmp
関数を使って実装されている。
そこで、知っておいた方がよい注意事項がいくつかある。
LC_COLLATE
は無視される。そのため、‘ls -v’ や ‘sort -V’ は、
数値ではない PREFIX (前置部分) を、LC_COLLATE
ロケール・カテゴリが
‘C’ に設定されているかのようにソートする。
abc-1.2.3.4.7z abc-1.2.3.7z |
abc-1.2.3.4.x86_64.rpm abc-1.2.3.x86_64.rpm |
This document was generated on June 7, 2022 using texi2html 1.82.