-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
を処理/レポートする必要があります。
これどうやってするの?
-bfs
私が必要なものではないことに気付きました... GitLab Wikiに含めるのに適した、大規模なGitLabプロジェクトへのインデックスを生成する簡単なスクリプトがあります。ディレクトリ名に基づいて階層的にヘッダーを作成します。上の例のファイル構造では、親ヘッダーの下ではなくdelta
、charlie
サブalpha
ヘッダーの下に置かれることを除いて、それはうまく機能します。
find
出力がアルファベット順にソートされていることです。理由はわかりません....
-bfs
ことができ、それは完全にこのユースケースに適合しない場合でも、便利になります。
find
(少なくとも、だけではないfind
)。ファイルのみを一覧表示しますか、それとも他のプライマリを使用しますか?