самое простое решение (которое может переусердствовать) - просто найти все файлы в подкаталогах для 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