ファイルを見つけようとしています。いいえ私のホームディレクトリとすべてのサブディレクトリに存在します。
find ~/ -name "bogus"
数秒後にこのメッセージを送ってください。しかし、KDE用dolphin
ファイルマネージャ同じことをするのに約3分かかります。これは私の以前の経験と一致しています。小人beagle
。
find
グラフィカル検索(コマンドライン引数よりも使用がより直感的です)より遅れている間、同じ操作をすばやく実行できますか?
ベストアンサー1
具体的には、DolphinとBalooを見てみると、単純なファイル名検索を実行しても、検索ドメイン内のすべてのファイルのメタデータを見つけるようです。プロセスを追跡すると、file.so
各ファイルとアイテムへの呼び出しが引き続きlstat
表示されます。getxattr
これらのシステムコールは、ファイル名とは異なる場所に保存されているファイルのメタデータを検索します。ファイル名はディレクトリの内容に保存されますが、メタデータはgetxattr
..
インデックスノード)。ファイル内のメタデータを複数回照会することは、データがディスクキャッシュにあるためコストがかかりますが、メタデータを照会することとメタデータを照会しないことにはかなりの違いがある可能性があります。
find
はるかにスマートです。不要なシステムコールを避けたいと思います。getxattr
拡張属性に基づいて検索しないため、呼び出されません。ディレクトリに移動するときは、lstat
一致しないファイル名を呼び出す必要があります。これは、再帰的に検索するサブディレクトリである可能性があるためです(lstat
これは、ファイルタイプを含むファイルメタデータを返すシステムコールです(例:汎用/directory/symlinks)。/…)。しかし、find
最適化があります。ディレクトリにいくつかのサブディレクトリがあるかどうかを知っています。リンク数lstat
、すべてのサブディレクトリを通過したことがわかったら、呼び出しを停止します。特に、リーフディレクトリ(サブディレクトリのないディレクトリ)ではfind
名前だけを確認し、メタデータは確認しません。また、一部のファイルシステムはディレクトリエントリにファイル形式のコピーを保持するため、find
これが必要な唯一の情報である場合は呼び出す必要はありません。lstat
メタデータ検証を必要とするオプションを使用して実行すると、より多くの呼び出しが発生しますが、その情報がfind
不要な場合(たとえば、名前と一致する以前のlstat
条件によってファイルが除外されたため)、ファイルへの呼び出しはまだ行われません。 。lstat
。
find
私は、車輪を再作成する他のGUI検索ツールは、数十年にわたって最適化されたコマンドラインユーティリティほどスマートではないと思います。 Dolphinは、少なくとも「すべての場所」を検索する場合、位置データベースを使用するのと同じくらい賢いです(ただし、ユーザーインターフェイスで明確ではないという制限は、結果が最新ではない可能性があることです)。