web-dev-qa-db-ja.com

`find -depth 1`がディレクトリの一覧表示に時間がかかるのはなぜですか?

現在のディレクトリにディレクトリを一覧表示しています。これが私が比較している2つのコマンドです:

ls -F | grep /

find . -type d -depth 1

lsコマンドはほぼ瞬時に実行されますが、findコマンドには約10秒かかります。 findコマンドは各サブディレクトリの内容を処理しているように見えますが、コマンドでは必要ないようです。

とは find . -type d -depth 1とても遅くするのですか?

11
Remi.b

-depthは単一のレイヤーで止まらないので、-maxdepthが必要です。代わりに、findに、ディレクトリの内容をそれ自体の前に処理するように指示します。つまり、深さ優先探索です。

代わりに試してください

find . -maxdepth 1 -type d

「隠し」ファイルも検索するため、ls -F | grep /以上のものが見つかります。私の例では、これまでになくわずかに高速でした(0.1と比較して0.091秒)。

21
Eric Renouf