Octoxan Asked: 2018-11-30 08:09:38 +0800 CST2018-11-30 08:09:38 +0800 CST 2018-11-30 08:09:38 +0800 CST 将所有子目录的内容向上移动到它们的子目录中 772 我面临的问题是我有一个包含数千个子目录的目录,每个子目录都包含更多子目录,并且所有这些子目录中都是图像。 我有成千上万的这些: /1056/7624/image.png 我基本上想在这里删除 7624 目录,这样我最终会得到数千个这样的目录: /1056/图像.png 我试过mv */*/* */*了,但那只是吓坏了……这甚至可以用终端命令来做吗? 我正在尝试这样做,这样我就可以使用这个多文件上传器而无需进入 50 个目录来获取 50 张图像。 files move 2 个回答 Voted Best Answer DopeGhoti 2018-11-30T08:17:39+08:002018-11-30T08:17:39+08:00 for dir in */*; do if [[ -d "$dir" ]]; then ( cd "$dir" mv -n * .. cd .. rmdir "$( basename "$dir" )" ) fi done 请注意,任何重复的文件或子目录名称都不会被移动,因此在这些情况下的深层目录不会被删除,因为仍然包含文件。 Wayne 2018-11-30T11:46:52+08:002018-11-30T11:46:52+08:00 这会将所有文件从当前目录和任何子目录移动到当前级别。重命名任何具有相同名称并附加数字的文件。 find ./ -type f -print -exec mv --backup=numbered {} . \; 那么你可以确保你得到了一切 find ./ -mindepth 2 -type f
请注意,任何重复的文件或子目录名称都不会被移动,因此在这些情况下的深层目录不会被删除,因为仍然包含文件。
这会将所有文件从当前目录和任何子目录移动到当前级别。重命名任何具有相同名称并附加数字的文件。
那么你可以确保你得到了一切