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

Имея следующую иерархию файлов:

dir ├── dirA │ └── snapshot │ └── subdir1 │ └── file1 └── dirB └── snapshot └── subdir2 └── file2 

Я хочу переместить файлы из каждого каталога snapshot / subdir в родительский каталог моментального снимка в одной команде. Это было бы:

 dir ├── dirA │ └── file1 │ └── snapshot │ └── subdir1 └── dirB └── file2 └── snapshot └── subdir2 

Я пробовал mv dir/*/snapshot/*/* ../../ но поскольку ../../ часть ../../ относится к рабочему каталогу, она явно не работает.

Возможно ли это с помощью команд bash (поскольку я никогда не писал ни одной строки сценария bash)?

  • Переименование и очистка имен файлов телепередач - S01E01.mp4 и т. Д.
  • Файлы, отсутствующие после использования mv и подстановки параметров в цикле
  • Перемещение подкаталога в новый родительский каталог, где новое имя каталога увеличивается на 1
  • Что происходит, когда несколько процессов пытаются mv одни и те же файлы между двумя различными файловыми системами
  • Файл "mv" с искаженным именем по номеру inode?
  • Обнаруживать, если переменная пуста
  • Перемещение файлов / таблицы по критериям выбора
  • Что делает «-t» в команде mv? Пример ниже
  • One Solution collect form web for “Перемещение нескольких файлов из нескольких каталогов в исходный адрес”

    Основываясь на внимательном наблюдении @ Don_Christ, этот ответ был отредактирован, тем самым сохраняя подоболочку:

     for i in dir/*/snapshot; do mv "$i"/*/* "$i"/.. done 
    Linux и Unix - лучшая ОС в мире.