Другая возможность, если вы не хотите автоматизировать его в одном скрипте, это использовать команду find для создания скрипта bash. Затем запустите скрипт bash. Таким образом, вы также можете определить происхождение файла.
Кроме того, я бы немного изменил вышеприведенное на всякий случай, если у вас есть дубликаты имен файлов, если вы можете подозревать это в вашей среде. Вам понадобится проверка ошибок в вашем скрипте.
Также вы хотите сохранить путь к каталогу?
т.е. если файл здесь
/source/a/b/c/d/e.jpg
Вы хотите скопировать это в
/dest/a/b/c/d/e.jpg?
или же
/dest/e.jpg?
Так что пример может быть
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
Это скопирует только в один каталог / резервную копию
Чтобы сохранить, вы могли бы сделать
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
Но тогда вы захотите сначала создать все каталоги
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
Сила этого заключается в том, что вы также можете просмотреть сценарии и убедиться, что все выглядит хорошо, прежде чем запускать команды. Я несколько раз сжигал команду с ... эээ ... неожиданными результатами :)
Кроме того, наличие сценария также дает вам отчет о том, что вы будете делать.