ダッシュの前にポイントをソートするLC_COLLATEはありますか?

ダッシュの前にポイントをソートするLC_COLLATEはありますか?

C私が確認したロケールでは、en_US.UTF-8ドット( ".")はダッシュ( "-")の後にソートされます。cdカタログ全体について「som」と言うと、これは以前some-dir.gitに完了しましたsome.git。また、私のプロジェクトのテーマをリストし、ファイルzdharma-256.themezdharma.theme。私にとって自然な順序は、短いカタログを最初に完成させることです。

LC_COLLATEこの問題を解決するために使用できますか?

たぶん対照的な問題ではなく、最初のソート時に拡張を無視する問題でしょうか?Zsh使用できるコード(ワイルドカードタグなど)がありますか?

答え1

いいえ、そのような校正はありません。少なくとも標準校正ではありません。

以下から直接確認できます。

  1. まずファイルを準備します。 (ラインAaaaここの内容はテスト目的でのみ使用されます。)

    cat >test <<\eof
    Aa
    aa
    some.git
    some-dir.git
    eof
    
  2. sortシステムで使用可能なすべての照合順序を使用してコマンドを実行します。

    for loc in $(locale -a); do
        echo "____${loc}____";
        LC_COLLATE="$loc" sort test;
    done > test_sorted
    
  3. test_sortedお気に入りのエディタを開き、さまざまなロケールが並べ替えられていることを確認Aaしてください。つまり、以前はaaすべて。some-dir.gitsome.git

    pcregrep -M 'some.git\nsome' test_sorted
    

    何も与えられません。

-前に表示される理由は、.ASCIIテーブルとUnicodeテーブルのためです(参考文献を参照man ascii)。ハイフンの10進数コード(技術的にハイフン減算と呼ばれる)は45(U + 002D)、点の10進数コードは46(U + 002E)です。

気になる場合は、この動作を変更するロケールを直接作成できます。最も簡単な方法は、現在のファイルの1つを変更することです/usr/share/i18n/locales/。これはで行うことができます。

関連情報