
У меня есть файловая структура с несколькими подпапками, где я хотел бы найти все подпапки, содержащие определенную строку ("sub*"), а затем переместить все файлы в этих найденных папках на один уровень выше от каждого из их соответствующих местоположений. И даже потенциально удалить тогда пустую папку, но я мог бы сделать это и вторым шагом.
решение1
Это должно сработать:
find /path/to/base/folder/ -type d -name 'sub*' -exec bash -c 'mv {}/* "$(dirname {})"' \;
ПРИМЕЧАНИЕ: это не переместит скрытые файлы (чьи имена начинаются с .
)
решение2
find /path/to -type f -execdir mv {} .. \;