私は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つの既知の注意:これは、文字列の「ページ」などのテキストを「無視」せずにソート順にのみ含まれます。 「行」と同じ番号を持つ他の項目がある場合、「行」項目は「ページ」項目の前にソートされます。
しかし、通常、この方法がうまくいかない場合編集する投稿を更新し、正しく解決されていないケースを表示するようにケースを更新してください。
答え2
zshとその使用グローバル予選
N
NULL_GLOBオプションの設定.
純粋なファイルのみを選択してください(たとえば、ディレクトリ、シンボリックリンク、fifo、デバイスの省略...)n
NUMERIC_GLOB_SORTオプションをオンにしてください
だから
% print -rC1 -- **/*(N.n)
1/1
1/2
1/11
2/8
2/9
2/10
11/page 4
11/page 05
11/page 6