Как переместить вложенные папки с шаблоном в новое место?
Пример списка источников:
/ data / aaa / _old /
/ data / bbb / _old /
Назначения должны быть:
/ archive / aaa / _old /
/ archive / bbb / _old /
Есть ли способ сделать это с помощью регулярного выражения и переместить
?
Примерно так:
mv /data/(.*)/_old/(.*) /archive/$1/_old/$2
До тех пор, пока вам не нужно сложное преобразование пути с помощью регекса, jyst использует регекс на полном пути для выбора файлов, как в вашем примере. Это хорошая идея: https://stackoverflow.com/questions/18640612/archive-old-files-only-and-re-construct-folder-tree-in-archive
Решение, сочетающее поиск и cpio
cd /data
find . -type f -regex "/data/.*/_old/.*" -print0 | cpio -dumpl0 /archive
find . -type f -regex "/data/.*/_old/.*" -print0 | xargs -0 rm
Я его не тестировал, так что попробуйте его в тестовом окружении.