Создать символическую ссылку с существующей структурой каталогов в новом месте

я использую

find source -name 'Archive.folder'

который выводит:

source/1/Archive.folder
source/2/Archive.folder
...

чтобы найти все папки с именем Archive.folder в исходной папке. Теперь я хочу связать их с новым местом /var/CommuniGate/Accounts. Как я могу это сделать? Я нашел следующее решение, но оно не работает, оно просто связывает исходную папку, а не найденные папки.

find source -name 'Archive.folder' | xargs -0 ln -s -t /var/CommuniGate/Accounts

Символические ссылки должны быть созданы следующим образом:

/var/CommuniGate/Accounts/source/1/Archive.folder
/var/CommuniGate/Accounts/source/1/Archive.folder
...

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


Ответы (1)


Что-то вроде этого, может быть:

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

Это работает для моего простого тестового примера.

person larsks    schedule 13.11.2019
comment
Я получаю ln: failed to create symbolic link 'test/Archive.folder': File exists после первого файла. Не удается скопировать структуру папок в источнике. В противном случае это, кажется, работает. - person user3742929; 13.11.2019
comment
Кажется, игнорируются папки 1,2,3,.. из моего примера. - person user3742929; 13.11.2019