/usr/bin/find
何もせずに意味のあるものを見せようとしていますがstat
、まだ有用な結果が出ていません。強制的に抑制すると、stat
find はサブディレクトリにまったく降りません。
システムコールのマニュアルページに示すように、そこにはフィールドがgetdents
あるため、決定を下すために必要ないくつかの情報がすでに存在している必要があります。d_type
find
stat
なぜ無視する-L
か、-H
何を選ぶべきですか?
ベストアンサー1
ソースを使用して、ルーク!
GNUfind
ソースコード(バージョン4.2.2を見ています)でディレクトリツリーをナビゲートするコードは、gnulib/lib/fts.c
次のコメントで1123行にあります。
このエントリに対する fts_read の関係を記録します。ほとんどの場合、単にfts_statですが、d_type情報を利用して不要なstat呼び出しを最適化できます。つまり、FTS_NOSTATが適用され、我々がシンボリックリンク(FTS_PHYSICAL)に従わず、d_typeがそれを示す場合いいえディレクトリであれば、まったく計算する必要はありません。その場合はいディレクトリを作成して(現在の)デバイスとinode番号を取得するには、とにかくそれを計算する必要があります。いつか、d_inoが有効であることが知られているディレクトリを最適化することもできます。
だから彼らはあなたが説明した最適化について考えましたが、それを実装しませんでした。