繁体   English   中英

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/所有子目录

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM