仅当目录内容包含文件时才将其上移一级

仅当目录内容包含文件时才将其上移一级

仅当目录包含文件时,如何将其向上移动一级。一些提示会有帮助。谢谢!

提升一级的示例:

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

所以最终结果是这样的:

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

这是提升一级的另一个示例:

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

所以最终结果是这样的:

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

要忽略的示例,因为文件(和子目录)已经低于一级:

├── 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

相关内容