[英]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.