すべてのファイルを一覧表示し、サブディレクトリがないディレクトリのみを一覧表示するにはどうすればよいですか?

すべてのファイルを一覧表示し、サブディレクトリがないディレクトリのみを一覧表示するにはどうすればよいですか?

ディレクトリツリーがあり、特定の種類(allなど.jpg)のすべてのファイルを再帰的に検索したいのですが、ファイルがディレクトリツリーの一番下にある場合にのみファイルを一覧表示したいと思います。

たとえば、私のツリーが次のような場合:

                          home
                          root
                   f1     f2     f3
                   f11    f22    f33
                   f111   f222   f333

すべてのフォルダにこのエントリがあります。 //etcのエントリだけをリストし、親フォルダのエントリは無視したいと.jpg思います。.jpgf111f222f333

find . -name "*.jpg"findコマンド(たとえば)を使用してツリー全体のすべてのアイテムのリストを取得できることを知っていますが、「結果の追加」などの操作を行わずに、一番.jpg下のフォルダにのみリストを制限する方法がわかりません。何百ものフォルダがあり、最後のレベルのフォルダがすべてのフォルダに別々の名前を持っているかどうかわからないため、実際には実現できません。grep111222333

ベストアンサー1

これは2つのステップで実行できます。

find . -type d -links 2 -print0 | xargs -0 -I{} find {} -name \*.jpg

最初のコマンドは、サブディレクトリなしですべてのディレクトリを一覧表示します(各サブディレクトリはリンク数に1を追加し、空のディレクトリには2があるため)。 2番目はfind各結果を手動で呼び出します。

おすすめ記事