altere vários destinos de links simbólicos de uma só vez

2

Recentemente eu mudei meu nome de usuário em osx seguindo a documentação da apple. Eu tenho os diretórios sh e bin no diretório inicial.

Normalmente, escrevo sh/foo.sh e vinculo a bin/foo para usá-lo.

Depois de alterar o nome de usuário, todos os links simbólicos indicam o caminho que inclui o nome de usuário antigo. Existe maneira de substituir todos os nomes de usuário em links simbólicos de uma só vez?

O nome de usuário antigo é bastante longo e uniq, que não corresponde a outras strings no caminho.

    
por ironsand 23.09.2013 / 08:53

1 resposta

0

Você não poderia simplesmente recriar os links simbólicos?

cd ~/bin; for f in ../sh/*.sh; do ln -sf $f $(basename $f .sh); done

Outras opções:

  • cd ~/bin; find . -lname '/Users/oldname/sh/*' -exec ln -sf ../sh/{}.sh {} \;
  • cd ~/bin; for f in *; do target=$(readlink $f); [[ $target = /Users/oldname/* ]] && ln -sf ${target/oldname/newname} .; done

ln não sobrescreve arquivos existentes sem -f . find -lname corresponde aos alvos dos links simbólicos.

    
por 23.09.2013 / 10:42