回答:
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 -z
null文字で区切られますが、その出力もnullで区切られているように見えるため、パイプxargs -0L1 echo
ラインで行ごとに取得する必要があります。 )。この場合、あなたは改行で区切られたすべてのエントリをファイルにリストを保存しているため、ファイル名に改行がしますまだ曖昧表現されます。おそらく、リストで何をしたいかによっては、中間ファイルさえ必要ないかもしれません。
これを試して:
find path-of-x -path '*/inc/*' -type d > list
"\inc\"
:)
-path
フラグで試してください