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