Переместите определенные папки в новое место и оставьте символическую ссылку в старом месте на новую папку.

У меня много папок с именем Archive.folder в /var/CommuniGate/Accounts/*/. Как я могу переместить их в новое место и оставить символическую ссылку в старой папке на новое место?

Может быть, использовать find и cp, чтобы переместить их?

find /var/CommuniGate/Accounts/ -name 'Archive.folder' -exec cp -r --parents {} . \;

Это отлично подходит для их перемещения и сохранения структуры папок. Но как можно оставить ссылку одновременно с ln? Также ссылка должна заменить старую папку.

После того, как я попытался выполнить следующее, это работает, если есть только одна папка.

find /var/CommuniGate/Accounts/ -name 'Archive.folder' -delete

find * -name 'Archive.folder' | xargs -0 -iDIR sh -c 'mkdir -p /$(dirname DIR); ln -s -t /$(dirname DIR) $PWD/DIR'

Я получаю permission denied за sh -c для всего после первого каталога.


person user3742929    schedule 19.11.2019    source источник


Ответы (1)


Вы можете просто переместить файл в нужное место, а затем создать символическую ссылку:

  • mv /var/CommuniGate/Accounts/Archive.folder* new_location/
  • ln -s new_location/Archive.folder* .
person A. Ecrubit    schedule 19.11.2019
comment
Я знаю. Но в Accounts есть много подпапок, каждая из которых содержит папку Archive.folder. - person user3742929; 19.11.2019
comment
Хорошо, я вижу, тогда вы можете повторно использовать команду поиска в новом месте. - person A. Ecrubit; 19.11.2019
comment
Нужно ли удалять папки перед этим? - person user3742929; 19.11.2019