我面临的问题是我有一个包含数千个子目录的目录,每个子目录都包含更多子目录,并且所有这些子目录里面都是图像。
我拥有的有数千个:
/1056/7624/image.png
我基本上想删除这里的 7624 目录,这样我最终会得到数千个这样的目录:
/1056/image.png
我尝试过mv */*/* */*
,但只是吓坏了......这是否可以使用终端命令来完成?
我正在尝试这样做,这样我就可以使用这个多文件上传器,而无需进入 50 个目录来获取 50 张图像。
答案1
for dir in */*; do
if [[ -d "$dir" ]]; then
(
cd "$dir"
mv -n * ..
cd ..
rmdir "$( basename "$dir" )"
)
fi
done
请注意,任何重复的文件或子目录名称都会不是被移动,因此在这些情况下的深层目录将不是由于仍然包含文件而被删除。
答案2
这会将当前目录和任何子目录中的所有文件移动到当前级别。重命名任何具有相同名称并附加数字的文件。
find ./ -type f -print -exec mv --backup=numbered {} . \;
然后你可以确保你得到了一切
find ./ -mindepth 2 -type f