Переместить файлы из каталога на один уровень вверх

Переместить файлы из каталога на один уровень вверх

У меня есть файловая структура с несколькими подпапками, где я хотел бы найти все подпапки, содержащие определенную строку ("sub*"), а затем переместить все файлы в этих найденных папках на один уровень выше от каждого из их соответствующих местоположений. И даже потенциально удалить тогда пустую папку, но я мог бы сделать это и вторым шагом.

решение1

Это должно сработать:

find /path/to/base/folder/ -type d -name 'sub*' -exec bash -c 'mv {}/* "$(dirname {})"' \;

ПРИМЕЧАНИЕ: это не переместит скрытые файлы (чьи имена начинаются с .)

решение2

find /path/to -type f -execdir mv {} .. \;

Связанный контент