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

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

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)?

  • Попытался переместить файл с помощью команды mv и теперь он потерян?
  • Создайте каталог с сегодняшней датой и переместите в него файлы
  • Перемещение файлов, измененных после определенной даты
  • Усечение имен папок после первого пробела
  • Ошибка mv command "уже существующий файл"
  • Копирование / перемещение файлов групп с переименованием
  • Я просто «mv» создал 49-гигабайтный каталог для плохого пути к файлу, возможно ли восстановить исходное состояние файлов?
  • Перемещение сохраняет права собственности на исходные файлы, не позволяя делать записи
  • One Solution collect form web for “Перемещение нескольких файлов из нескольких каталогов в исходный адрес”

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

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