幅優先検索に「検索」を使用するには?

幅優先検索に「検索」を使用するには?

主な-depthものはfind深さ優先検索を実行することです。

ただし、基本的な順序は次のとおりです。いいえ幅優先検索。

基本シーケンスは、「処理ノードの深さ優先巡回」として非公式に記述することができる。最初逆追跡中にそうする代わりに発生しました。 」

大雨優先探索が本当に必要です。どうすればfindこのような行動をすることができますか?


説明の便宜のために、以下の設定が使用される。

$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}

find次の基本的な動作があります。

$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo

そして、-depth次のように実行されます。

$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha

しかし、私が望むのは、次の(仮想)オプションです。

$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma

つまり、find処理/報告する必要があります。みんな追加処理の前に、ファイル/ディレクトリを指定された深さに配置します。

どうすればいいですか?

ベストアンサー1

# cat ./bfind

#!/bin/bash
i=0
while results=$(find "$@" -mindepth $i -maxdepth $i) && [[ -n $results ]]; do
  echo "$results"
  ((i++))
done

これはfind深さと反復を加えることによって達成される。結果は重複する可能性がありますが、簡単にフィルタリングできると思います。

おすすめ記事