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