端末でファイル名の長さを無視し、ファイルがアルファベット順にリストされているのはなぜですか?

端末でファイル名の長さを無視し、ファイルがアルファベット順にリストされているのはなぜですか?

端末でファイル名の長さを無視し、ファイルがアルファベット順にリストされているのはなぜですか?

たぶんファイル名の長さを「無視する」と言ってはいけませんが、端末とGUIでファイルを表示するのに違いがあるのはなぜですか?

きっと些細な質問ですが、しばらく少し気になりました。

ターミナルでオプション(他のソートオプションが指定されていない)lsを含む一般的なコマンドは、-lリストの一番上の行から始めて下に移動しながら、アルファベット順にファイルを一覧表示します。次のように生成されたファイルでいっぱいのディレクトリがあるとしましょう。

$ touch file1{1..16}

ls同じディレクトリに以下が表示されます。

-rw-r--r--. 1 user user  0 May 24 11:14 file1
-rw-r--r--. 1 user user  0 May 24 11:14 file10
-rw-r--r--. 1 user user  0 May 24 11:14 file11
-rw-r--r--. 1 user user  0 May 24 11:14 file12
-rw-r--r--. 1 user user  0 May 24 11:14 file13
-rw-r--r--. 1 user user  0 May 24 11:14 file14
-rw-r--r--. 1 user user  0 May 24 11:14 file15
-rw-r--r--. 1 user user  0 May 24 11:14 file16
-rw-r--r--. 1 user user  0 May 24 11:14 file2
-rw-r--r--. 1 user user  0 May 24 11:14 file3
-rw-r--r--. 1 user user  0 May 24 11:14 file4
-rw-r--r--. 1 user user  0 May 24 11:14 file5
-rw-r--r--. 1 user user  0 May 24 11:14 file6
-rw-r--r--. 1 user user  0 May 24 11:14 file7
-rw-r--r--. 1 user user  0 May 24 11:14 file8
-rw-r--r--. 1 user user  0 May 24 11:14 file9

私の質問は、なぜ「file10」が端末で「file1」の後に来るのかということです。 GUI環境でファイルを詳細またはリストビューで名前またはタイプ別に並べ替えると、同じファイルが「file1」、「file2」、「file3」などとしてリストされます。

GUIのファイルリストは、ファイル名の長さに基づいてアルファベット順に優先順位が付けられ、最小長から最大長までファイルを一覧表示するように表示されます。そうですか?これには技術的な理由がありますか?コマンドlsはファイルをソートする方法で進行しますか、それともGUIを使用して同じことをしますか?

ベストアンサー1

デフォルトの順序はlsアルファベット順です。この場合、数字はもはや数字ではなく文字です。 sofile1は so よりも名前が短いfile10が、それ以外は同じなので、リストから前に出ます。

自然なバージョンの順序が必要な場合はls -l --sort=version(またはls -lv)試してみてください。

-rw-r--r--+ 1 roaima 0 May 24 18:50 file0
-rw-r--r--+ 1 roaima 0 May 24 18:50 file1
-rw-r--r--+ 1 roaima 0 May 24 18:50 file2
...
-rw-r--r--+ 1 roaima 0 May 24 18:50 file9
-rw-r--r--+ 1 roaima 0 May 24 18:50 file10
-rw-r--r--+ 1 roaima 0 May 24 18:50 file11
-rw-r--r--+ 1 roaima 0 May 24 18:50 file12
-rw-r--r--+ 1 roaima 0 May 24 18:50 file13

他の多くのソートオプションが利用可能ですlsman ls詳しくはこちらをご覧ください。

おすすめ記事