回答:
find 単独でこれを行うことができます:
find X -path '*/inc/*' -type d > list
詳細については、の-path部分をお読みman findください。
コメントですぐに述べたように、ディレクトリ行をテキストファイルに分けて保存すると、改行を含むディレクトリ名は明確に表現できなくなります。ディレクトリに改行が含まれていないことが確実な場合は、それで問題ありません。ただの一般的な発言。
ここに便利なワンライナーがあります:
find X -type d -name "inc" -exec sh -c 'find {} -type d' \; > list
find最初のfind結果ごとに実行されます。このexecオプションは、最小限のシェルコマンドを使用することもできます。このコマンドで{}は、前述のとおり、最初のの各ディレクトリに置き換えられfindます。
2番目findは、リクエストに応じて、ディレクトリを含む最初の結果の「すべてのサブディレクトリを一覧表示」しますinc。それ自体を出力に含めたくない場合は、2番目find に少なくとも深さ1のフォルダーを出力させます。
find X -type d -name "inc" -exec sh -c 'find {} -mindepth 1 -type d' \; > list
次に、コマンドをにリダイレクトstdoutしlistます。
find path -name inc -type d -exec sh -c 'find {} -mindepth 1 -maxdepth 1 -type d' \;
さて、このネストされた検索をシミュレートする答えを見つけました:
find X/ -type d | grep "/inc/" > list
find X/ -type d -print0 | awk 'BEGIN{RS="\0"}/\/inc\//' > list(grep -znull文字で区切られますが、その出力もnullで区切られているように見えるため、パイプxargs -0L1 echoラインで行ごとに取得する必要があります。 )。この場合、あなたは改行で区切られたすべてのエントリをファイルにリストを保存しているため、ファイル名に改行がしますまだ曖昧表現されます。おそらく、リストで何をしたいかによっては、中間ファイルさえ必要ないかもしれません。
これを試して:
find path-of-x -path '*/inc/*' -type d > list
"\inc\":)
-pathフラグで試してください