Como criar links simbólicos a partir do arquivo

1

Eu tenho diretório escalável para o tema de ícones vetoriais e eu tenho um monte de links simbólicos lá que eu quero substituir por um arquivo que contenha nomes que eu possa usar com comando ln, eu criei o arquivo que contém linhas que se parecem isso:

scalable/actions/messagebox_warning.svg scalable/emblems/emblem-danger.svg
scalable/emblems/emblem-nowrite.svg scalable/emblems/emblem-unreadable.svg
scalable/distributor-logos/debian.svg scalable/emblems/Debian.svg
scalable/mimetypes/gnome-mime-text-plain.svg scalable/emblems/emblem-documents.svg
scalable/emblems/emblem-personal.svg scalable/emblems/emblem-readonly.svg
scalable/mimetypes/package-x-generic.svg scalable/emblems/emblem-package.svg
scalable/apps/download.svg scalable/emblems/emblem-downloads.svg
scalable/devices/network-wired.svg scalable/emblems/emblem-shared.svg
scalable/distributor-logos/ubuntu.svg scalable/emblems/emblem-ubuntu.svg

Eu tentei usar este comando:

xargs -L 1 ln -sf < src/symlinks

tente também isto:

xargs -L 1 -I{} ln -sf {} < src/symlinks

mas criou links simbólicos que apontam para si mesmos. Como posso criar links simbólicos onde desination no nome do arquivo são retirados do arquivo?

    
por jcubic 27.12.2016 / 23:36

2 respostas

3

Supondo que seu arquivo esteja na ordem correta (destino, nome do link) e que nenhum nome de arquivo contenha caracteres especiais ou espaços:

sed 's/^/ln -sf /g' < src/symlinks | sh

transformará sua lista de links simbólicos em uma série de comandos ln -sf e os executará usando sh .

    
por 27.12.2016 / 23:42
0

Solução usando um loop while , sob a suposição de que os caminhos não possuem espaços ou novas linhas neles:

while IFS=' ' read -r t l; do ln -sf -- "$t" "$l"; done < src/symlinks
    
por 27.12.2016 / 23:45