ls -v(自然数ソート)コマンドは、大文字以外のファイル/ディレクトリの前に大文字のファイル/ディレクトリをソートします。

ls -v(自然数ソート)コマンドは、大文字以外のファイル/ディレクトリの前に大文字のファイル/ディレクトリをソートします。

自然に数字を揃えたいけど大文字のファイル/ディレクトリは一番上に並べ替えられません。それは可能ですか?

現在のls -lv生産:

FOO/
bar/
ZEBRA.x
foo.x
foo-1.x
foo-2.x
foo-10.x

私はめちゃくちゃ|sort ...でしたが、(1)私が試したすべてがうまくいかず、(2)--color=auto私のコマンドからls削除されました。色の解決策があると確信していますが、それが何であるかわかりません。

編集する

私のテストでは、LC_COLLATE=C ls -lと同じことを行いますls -lv

ベストアンサー1

zsh代わりに、いつでも'snumericglobsortまたはglob修飾子を使用できますn

$ locale title
English locale for Britain
$ print -rC1 -- *(Nn)
bar
FOO
foo-1.x
foo-2.x
foo-10.x
foo.x
ZEBRA.x
$ () { local LC_COLLATE=C; print -rC1 -- *(Nn); }
FOO
ZEBRA.x
bar
foo-1.x
foo-2.x
foo-10.x
foo.x

GNUの使用ls:

ls -U -ld --color -- *(n)

ソートせずにlsglob 拡張子が指定した順序でファイルをリストします。zsh

Cロケールのように、ロケールのソート順が大文字と小文字を区別する場合は、次のこともできます。

$ locale title
ISO/IEC 14652 i18n FDCC-set
$ print -rC1 -- *(Nnoe['REPLY=$REPLY:l'])
bar
FOO
foo-1.x
foo-2.x
foo-10.x
foo.x
ZEBRA.x

式を評価してソートできるように、oeglob修飾子を使用して名前を小文字に書き換えますか?loeREPLY=$REPLY:l e

GNUの場合(バージョンソートのために)sortは(大文字と小文字の区別の一致)と組み合わせること-Vができますが、-fファイル名に改行文字が含まれておらず、ASCII文字としてのみ機能すると仮定します。

$ ls | LC_COLLATE=C sort -Vf
bar
ETE
FOO
foo.x
foo-1.x
foo-2.x
foo-10.x
ZEBRA.x
Á
ÉTÉ
á
été

おすすめ記事