Переместить несколько файлов из нескольких каталогов в место назначения относительно источника

Переместить несколько файлов из нескольких каталогов в место назначения относительно источника

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

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

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

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

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

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

решение1

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

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

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