ディレクトリ内のファイルの「ディレクトリ順序」とは何ですか(「ls -U」で使用)?

ディレクトリ内のファイルの「ディレクトリ順序」とは何ですか(「ls -U」で使用)?

lsのマニュアルページによると、ls -Uこれは次のことを意味します。

ソートがありません。エントリはディレクトリの順序でリストされます。

「ディレクトリ順序」とはどういう意味ですか?どうやって決めますか?

次のテスト(ext3ファイルシステムで実行されます)は、これがファイルが生成される順序ではないことを示しています。

root@sv1010vm0007:/tmp# mkdir test
root@sv1010vm0007:/tmp# touch test/2
root@sv1010vm0007:/tmp# touch test/1
root@sv1010vm0007:/tmp# touch test/3
root@sv1010vm0007:/tmp# ls -U test
2  3  1

答え1

ファイルシステムによって異なります。一部のファイルシステム(そのうちext3)では、ディレクトリは実際にはよく知られている形式のファイルであり、その権限またはモードに「d」ビットが設定されています。この場合、ファイル名の長さの作成と削除の履歴が重要な場合があります。カーネルは、新しいファイルの名前を保存するのに十分なスペースを持つディレクトリファイルの最初のエントリを入力します。バラよりhttp://e2fsprogs.sourceforge.net/ext2intro.html詳細については、「物理的説明」セクションを参照してください。

Reiserfsなどの他のファイルシステムの場合、ディレクトリは実際にはB+ツリーの一部の項目これはファイルシステムでは見えないため、lsReiserfsファイルシステムの通常のディレクトリは語彙順にソートされます。

答え2

実際、特に期待できる順序はありません。必要な方法でアイテムをソートすることは、オペレーティングシステムとファイルシステムによって異なります。このオプションの1つの目的は、できるだけ早くリストを取得することです。これは非常に大きなディレクトリにとって重要な要素になる可能性があります。

答え3

これは、アイテムがファイルシステム内に保存される順序です。これはファイルシステムによって異なります。たとえば、アンサンブルは一種のバランスツリーに保存できます。レッドブラックツリー。エントリ数が少ないディレクトリに対して追加の最適化があるか、追加と削除を効率的に処理できます。

答え4

ディレクトリは、物理ファイルのメタデータを一覧表示する別のファイルです。 「ls -U」は、ディレクトリファイルのすべての内容を同じ順序でリストします。

順序は、オペレーティングシステムとファイルシステムの実装によって決まります。

関連情報