ディレクトリ検索時の検索深度の変更

ディレクトリ検索時の検索深度の変更

.txtファイルを含むすべてのディレクトリを検索したいです。ただし、前のレベルを印刷する必要があります。

たとえば、再帰を使用して現在のディレクトリからファイルをfind検索します。.txtその後、そのファイルを含むディレクトリのみが表示されます。

find . -name "*.txt" -printf '%h\n'

(たとえば)に出力

./out/data
./out/data
./output/data

findしたがって、次の方法の使用を改善したいと思います。

  1. .txt重複したディレクトリは表示されません。 (その中に2つのファイルがあるためです。)

  2. 最初のレイヤーだけを印刷したいです./out/./output/

ベストアンサー1

もっと中心的なアプローチがあるかもしれませんが、find他のツールを使ってそれを助けることができます。

find . -name '*.txt' -printf '%h\n' | cut -f1,2 -d/ | sort -u

awkまたは、プロシージャを保存して次のようなものを使用することもできます。

find . -name '*.txt' -printf '%h\n' | awk -F/ '{matched[$1"/"$2]=1} END {for(dir in matched) {print dir}}'

おすすめ記事