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

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

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

One Solution collect form web for “Перемещение нескольких файлов из нескольких каталогов в исходный адрес”

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

 for i in dir/*/snapshot; do mv "$i"/*/* "$i"/.. done 
  • Как восстановить несколько файлов, которые были перемещены в один?
  • В чем смысл mv -f?
  • ОШИБКА: неожиданный конец файла
  • Как сортировать файлы в подпапку на основе части имени файла?
  • Усекать при необходимости при перемещении файла в файловую систему с более коротким NAME_MAX
  • Как искать файл и перемещаться в несколько каталогов назначения?
  • Как перенести файлы из определенных каталогов во вновь созданные каталоги на основе их расширения?
  • Переместить скрипт оболочки файла
  • Восстановить скрипт корзины не работает
  • Файлы, отсутствующие после использования mv и подстановки параметров в цикле
  • Есть ли способ заставить «mv» терпеть неудачу?
  • Как переместить несколько файлов и добавить расширение .pgp?
  • Interesting Posts

    sudo at -f <(echo "rm $ file") теперь + 2 часа урона на: / dev / fd / 63: Нет такого файла или каталога

    Как я могу узнать IP-адрес других пользователей, зарегистрированных на одном удаленном компьютере?

    Прерывая rsync с помощью ctrl-c, следует ли использовать `–partial` или` –append`?

    «Не удалось инициализировать wxWidgets», за которым следует свалка ядра

    Переопределить существующую папку с помощью cp

    Что означает ] В регулярном выражении?

    Отключить отображение меню grub на ЖК-дисплее и отобразить только на последовательной консоли

    Запуск скрипта каждые 30 минут с помощью crontab с использованием ROOT (Debian)

    Сценарий чтения оболочки для sftp

    Как переписать многострочный путь в однострочный относительный путь

    Разрезает ли вырезать любые поля, если разделитель не существует

    будет хвост с трубопроводом читать весь файл?

    не жадный grep

    SSH Remote Port Forward Host Без пароля

    Удалить все файлы без ключевого слова в имени файла

    Linux и Unix - лучшая ОС в мире.