マルチレベル数値パスの並べ替え

マルチレベル数値パスの並べ替え

私はUbuntu 22を使用しており、別の場所に数値を含む迷惑な名前の大きなファイルツリーがあります。それは次のとおりです。

./2
./2/9
./2/10
./2/8
./1
./1/2
./1/1
./1/11
./11
./11/page 6
./11/page 05
./11/page 4

「ページ」のようなものを無視し、数値に基づいてソートして次のようにします。

./1/1
./1/2
./1/11
./2/8
./2/9
./2/10
./11/page 4
./11/page 05
./11/page 6

私はこれを試しましたが、sort -n最初のレベルのディレクトリ名だけを見ても、期待どおりに機能しないようです。

$ find . -mindepth 1 -type d | sort -n
./1
./11
./2

「(数値の代わりに)各整数で並べ替える」の便利なオプションはありますか?

ベストアンサー1

sort -V少なくとも例の単純さを考えると、これが欲しいと思います。

$ sort -V << EOF
./2
./2/9
./2/10
./2/8
./1
./1/2
./1/1
./1/11
./11
./11/page 6
./11/page 05
./11/page 4
EOF
./1
./1/1
./1/2
./1/11
./2
./2/8
./2/9
./2/10
./11
./11/page 4
./11/page 05
./11/page 6

1つの既知の注意:これは、文字列の「ページ」などのテキストを「無視」せずにソート順にのみ含まれます。 「行」と同じ番号を持つ他の項目がある場合、「行」項目は「ページ」項目の前にソートされます。

しかし、通常、この方法がうまくいかない場合編集する投稿を更新し、正しく解決されていないケースを表示するようにケースを更新してください。

おすすめ記事