1つ以上のファイルを含むすべてのディレクトリを見つける方法は?

1つ以上のファイルを含むすべてのディレクトリを見つける方法は?

ディレクトリ階層があります。一部のディレクトリにはファイルがなく、他のディレクトリのみが含まれています。一部にはファイルが含まれます。

たとえば、

- movies
  - 2022
    - action
      - movie.mp4
      - another-movie.mp4
  - 2023
    - drama
      - movie2.mp4
  - 2024
    - thriller
      - movie3.mp4
    - movie4.mp4

find私はこの結果を与えるコマンドが欲しい:

/movies/2022/action
/movies/2023/drama
/movies/2024
/movies/2024/thriller

私は読んだこれそしてこれそしてこれfindしかし、コマンドを見つけることはできません。

修正する: ディレクトリにはファイルとディレクトリを含めることができます。質問を更新しました。たとえば、2024映画とは異なるディレクトリがあります。結果には目次を/movies/2024含める必要があります。/movies/2024/thriller

ベストアンサー1

ファイル形式の検索定期的な含まれているディレクトリを印刷します。リストは、各ディレクトリが一度だけリストされるように一意です。 GNUシステムでは、改行文字を含むファイルパスがある場合でも、これを確実に行うことができます。

find /path -type f -print0 |
    LC_ALL=C sed -z 's!/[^/]*$!!' |
    LC_ALL=C sort -zu |
    tr '\0' '\n'

標準では、ファイルパスに改行文字が含まれていないと仮定しています。

find /path -type f -print |
    LC_ALL=C sed 's!/[^/]*$!!' |
    LC_ALL=C sort -u

おすすめ記事