以下のようにディレクトリのファイル名をソートしようとしています。
$ ls -1v
file-1.10.0-114.1.1.x86.tb1_2.rpm
file-1.10.0-114.2.2.x86.tb1_2.rpm
file-1.10.0-114.11.2.x86.tb1_2.rpm
file-1.10.0-114.x86.tb1_2.rpm
file-1.10.0-115.1.1.x86.tb1_2.rpm
file-1.10.0-115.2.2.x86.tb1_2.rpm
file-1.10.0-115.3.1.x86.tb1_2.rpm
file-1.10.0-115.22.1.x86.tb1_2.rpm
file-1.10.0-115.x86.tb1_2.rpm
しかし、私の期待は次のとおりです。
file-1.10.0-114.x86.tb1_2.rpm
file-1.10.0-114.1.1.x86.tb1_2.rpm
file-1.10.0-114.2.2.x86.tb1_2.rpm
file-1.10.0-114.11.2.x86.tb1_2.rpm
file-1.10.0-115.x86.tb1_2.rpm
file-1.10.0-115.1.1.x86.tb1_2.rpm
file-1.10.0-115.2.2.x86.tb1_2.rpm
file-1.10.0-115.3.1.x86.tb1_2.rpm
file-1.10.0-115.22.1.x86.tb1_2.rpm
試してみましたが、sort -V
同じ結果が表示されます。どのようにソートする必要がありますか?
ベストアンサー1
次のコマンドを試してください。
ls -h | sort -t. -k3,3 -k4,4n
ls -h
- lsコマンドの標準出力(ユーザーとグループ名にドットが含まれていない場合は、ls -lhを使用して同じ結果を得ることができます)
-t.
- コマンドをソートするための区切り文字を設定します。
-k3,3
- 3番目のフィールドでソート
今後...
-k4,4n
- 4番目のフィールドに基づいて数値順にソート