あなたが説明する「もの」は一般にファイルシステムと呼ばれ、Linuxで利用可能なファイルシステムの選択肢があることを知っているかもしれません:ext3、ext4、btrfs、Reiser、xfs、jffsなど。
あなたが説明するテーブルは、おそらく inode-directory コンボに非常によくマップされます。
私の見解では、ファイルが物理的にハードディスク上のどこにあるかの全体的な管理はユーザーの仕事ではありません。それは厳密にはオペレーティング システムのドメインであり、優れた言い訳がない限り (たとえば、データ回復プログラム) と関連するファイル システムの非常に深い知識。さらに、ほとんどの場合、ファイルのストレージは連続しておらず、ディスク上の複数の場所 (フラグメント) に分散しています。
しかし、ここでのより重要な質問は、おそらく、この方法でファイルを検索することによって、正確に何を達成したいのかということです。
編集:OPのコメントに基づいて、ここに重大な誤解があると思います-絶対ファイルアドレスとファイルサーチャーの間のリンクはわかりませんが、それは「絶対アドレス」に対するそれぞれの理解の根本的な違いによるものかもしれませんファイルシステムのコンテキストで。
ファイルシステム内のすべてのファイルを確認したいだけの場合は、次のいずれかを実行できます
- 再帰的なディレクトリ読み取りを実行するか、
- SmartGuyz が提案するように、updatedb によって準備されたデータベースを使用します
とにかくファイルを調べたいので-そしてそれはほとんどすべてのランタイムが費やされる場所です-私は2)が1)よりも優れているとは考えられません.2)外部依存関係を持つという欠点があります。 updatedb によって準備されたファイルが存在し、非常に新鮮でなければなりません。
古き良き opendir/readdir/closedir よりもディレクトリをトラバースするより高度な方法について話す SO の質問: opendir()、readdir()、closedir() を使用してディレクトリ ツリーを効率的にトラバースする
OPの質問の補遺に基づくEDIT2:はい、ディレクトリのトラバースには時間がかかりますが、それは人生です。次善の策、つまりロケートとフレンドを考えてみましょう。これは、定期的に (通常は 1 日 1 回) 更新される「データベース」に依存するため、最後にスケジュールされた更新後に追加または名前変更されたすべてのファイルは検出されず、最後にスケジュールされた更新後に削除されたファイルは、それらはもう存在しませんが、データベース。ターゲットマシンにlocateがインストールされていると仮定しても、確信が持てません。
プログラミングのほとんどの場合と同様に、同じ問題に対する以前の解決策を見るのは決して悪いことではありません。GNU findutilsのドキュメントを読むことをお勧めしますか?