Linux - ファイルマネージャでの名前ソートの挙動!

Updated:


Linux GUI 上のファイルマネージャでファイル名でソートした時の挙動についての備忘録です。

ファイル名でソートした際のソート順のおかしいことが気になったので自分なりに熟慮してみた次第。

0. 前提条件

  • Linux Mint 13(64bit) での作業を想定。
  • ファイルマネージャは Caja 1.2.1(Nautilus フォーク) を想定。

1. コンソール上でのソート

あるディレクトリ配下に、以下のようなファイル名が半角英数字とハイフンで構成されているファイル(いわゆる UUID + “.xml”)が存在するものと想定する。
コンソール上で ls コマンドを使用して一覧にすると、以下のような順で表示される。
特にオプション指定しなくても、ファイル名を文字列とみなして昇順でソートされて表示される。何も不自然でなく、全く問題ない。

$ ls
e003cfee-b7f6-3761-92dd-1e4e9011254f.xml
e1b46ed2-4e25-3932-a80d-b4f47f49007c.xml
e1befd45-9d1b-348c-af98-b3dd9daf3eb6.xml
e1f8811d-cd21-3a7d-96f5-96f3010587b6.xml
e2a032fa-04dc-3d46-be87-cd7e206686df.xml
e3f95f96-6db1-3641-b0ff-836b1d0bb49f.xml
e4ac8922-5d24-3e70-80ad-700574af07d2.xml

2. ファイルマネージャ上でのソート

ファイルマネージャで「名前」でソートすると、以下のようなソート順となる。

FILE_ORDER

コンソール上での表示と異なるのは、”e003cfee-b7f6-3761-92dd-1e4e9011254f.xml” が5番目に表示されるということ。

3. 結論

  • ファイルマネージャ上での「名前」でのソートは、ファイル名を(単純に)文字列とはみなしていない。
  • ファイルマネージャ上では、連続する数字は「ゼロサプレス」した数値として比較してしまう。
    例えば、”009” と “1” という文字列は “9” と “1” という数値とみなされる、ということ。

ゆえに、今回の場合は、

e003cfee-b7f6-3761-92dd-1e4e9011254f.xml
  ↓
e3cfee-b7f6-3761-92dd-1e4e9011254f.xml

と “003” の部分が “3” とみなされてソートされるようだ。

e003cfee-b7f6-3761-92dd-1e4e9011254f.xml
e1b46ed2-4e25-3932-a80d-b4f47f49007c.xml
e1befd45-9d1b-348c-af98-b3dd9daf3eb6.xml
e1f8811d-cd21-3a7d-96f5-96f3010587b6.xml
e2a032fa-04dc-3d46-be87-cd7e206686df.xml
e003cfee-b7f6-3761-92dd-1e4e9011254f.xml => e3cfee-b7f6-3761-92dd-1e4e9011254f.xml
e3f95f96-6db1-3641-b0ff-836b1d0bb49f.xml
e4ac8922-5d24-3e70-80ad-700574af07d2.xml

4. 対処方法について

結果、有効な対処方法は特に発見できなかった。

LANGLC_CTYPE 等のロケールを変更することで対処できそうにも思えたが、情報がない上、システム内の既存の正常に動作している部分に影響も出かねない。

ということで、ファイルマネージャ上の「名前」によるソートはそういうものだ、ということが理解できたということに留めておく。


ちょっと気になっていたので、調べてみた次第です。

以上。





 

Sponsored Link

 

Comments