Bash 脚本检查文件夹中的文件然后将文件移动到根目录并删除空目录

Bash script check folder for file then move file to root directory and delete empty directory

这应该很简单。我需要检查根目录中的每个文件夹中的文件并将文件从其目录移动到根目录并删除该空目录。我在 Windows 中使用过此批处理脚本,但我想将其转换为 bash 脚本并且我对 bash.

不太熟悉
cd /d M:\
for /F "delims=" %%a in ('dir /B /AD') do (
   cd "%%a"
   for /F "delims=" %%b in ('dir /B /AD') do (
      move "%%b" ..
   )
   move *.* ..
   cd ..
   rd "%%a"
)

示例:

/root

/root/Test/1.txt

/root/1.txt

最简单的解决方案(可能做得太过分了),就是找到 root/ 的子目录中的所有文件并将它们移动到 root/,然后尝试删除 root/ 的所有子目录=12=]

find root/ -mindepth 2 -maxdepth 3 -type f -exec mv {} root/ ";"
rmdir --ignore-fail-on-non-empty root/*/

这不会检查是否有多个同名文件(它只会覆盖它们)。它还将删除 root/.

中的所有空目录

另一种尝试只删除包含已移动文件的子目录:

root=root/

for f in "${root}"/*/*; do
  if [ -f "${f}" ]; then
    rm -f "${root}/${f##*/}"
    mv "${f}" "${root}"
    rmdir --ignore-fail-on-non-empty "${f%/*}"
  fi
done