フォルダ構造が混乱しています。 1つを除いて空のサブフォルダを削除する方法はありますか?

フォルダ構造が混乱しています。 1つを除いて空のサブフォルダを削除する方法はありますか?

Debian コンピュータで自分のムービーフォルダを再構築しようとすると、最終的に次のような構造になりました。

├── Universal.Love(2017)(1080p)
│   └── Universal.Love(2017)(1080p)
│       └── Universal.Love(2017)(1080p)
│           └── Universal.Love(2017)(1080p).mkv
│               └── Universal.Love(2017)(1080p).mkv.mkv
├── Unknown.User.2014.German.DTS.DL.1080p.BluRay.x264-EXQUiSiTE
│   └── exq-unknownuser-1080p
│       └── exq-unknownuser-1080p
│           └── exq-unknownuser-1080p
│               └── exq-unknownuser-1080p.mkv
├── Unsane.2018.1080p.BluRay.x264-DRONES
│   └── Unsane.2018.1080p.BluRay.x264-DRONES
│       └── Unsane.2018.1080p.BluRay.x264-DRONES
│           └── Unsane.2018.1080p.BluRay.x264-DRONES
│               └── Unsane.2018.1080p.BluRay.x264-DRONES.mkv
├── Untitled (2017)
│   └── Untitled.2017.WEBDL-1080p
│       └── Untitled.2017.WEBDL-1080p
│           └── Untitled.2017.WEBDL-1080p
│               └── Untitled.2017.WEBDL-1080p.mkv

1つのサブフォルダにのみ.mkvを持つことはできますか?

ベストアンサー1

shopt -s globstar nullglob
for dir in ./*/; do
    for file in "$dir"/**/*.mkv; do
        [ ! -f "$file" ] && continue
        mv -i "$file" "$dir"
    done
done

上記の二重ループで問題を解決することができます。

これは、現在のディレクトリ(これらすべての最上位ディレクトリを保持するディレクトリと見なされます)のディレクトリを繰り返し実行します。各ディレクトリに対して、.mkvそのディレクトリの下のすべてのファイルがサブディレクトリに移動されます。これは、サブディレクトリが再帰的に一致する**globsを介して行われます。bash

シェルの有効化globstarオプションが機能し**nullglob与えられたパターンに一致するものがない場合、ループはまったく実行されません。

その後、次のコマンドを使用して空のディレクトリを削除できます。

find . -type d -empty -delete

おすすめ記事