ファイルが含まれている場合にのみ、ディレクトリコンテンツを1レベル上に移動します。

ファイルが含まれている場合にのみ、ディレクトリコンテンツを1レベル上に移動します。

ファイルが含まれている場合にのみディレクトリを1レベル上に移動する方法。いくつかのヒントが役に立ちます。ありがとうございます!

一歩上に移動する例:

├── AAA
│   └── AAA1
│       ├── 001.jpg
│       ├── 002.jpg
│       ├── 003.jpg

したがって、最終結果は次のようになります。

├── AAA1
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

1つのレベルに上がるもう1つの例は次のとおりです。

├── AAA
│   └── BBB
│       └── DDD
│           └── 001.jpg
│       ├── 001.jpg
│       ├── 002.jpg
│       ├── 003.jpg

したがって、最終結果は次のようになります。

├── BBB
│   └── DDD
│       └── 001.jpg
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

ファイル(およびサブディレクトリ)がすでに1つ下のレベルにあるため、無視する例:

├── BBB
│   ├── CCC
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

迅速で汚い解決策:

#!/bin/bash
for d in /mnt/g/test/* ; do
  if [[ -n $(find "$d" -maxdepth 1 -type f) ]]
  then
    echo ""
  else
    find "$d" -mindepth 1 -type d -execdir mv "{}" ./.. \;
  fi
done
find /mnt/g/test/* -type d -empty -delete

関連情報