Unix move folders with pattern

Как переместить вложенные папки с шаблоном в новое место?

Пример списка источников:

  • / data / aaa / _old /
  • / data / bbb / _old /

Назначения должны быть:

  • / archive / aaa / _old /
  • / archive / bbb / _old /

Есть ли способ сделать это с помощью регулярного выражения и переместить ?

Примерно так:

mv /data/(.*)/_old/(.*) /archive/$1/_old/$2
1
задан 11 March 2016 в 20:58
1 ответ

До тех пор, пока вам не нужно сложное преобразование пути с помощью регекса, 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

Я его не тестировал, так что попробуйте его в тестовом окружении.

1
ответ дан 3 December 2019 в 23:50

Теги

Похожие вопросы