Como excluo o destino de um link simbólico sem excluir o próprio link?

8

Eu tenho um link simbólico ~/Desktop/test.txt que aponta para ~/rendu/test.txt .

Sei SOMENTE o caminho de ~/Desktop/test.txt , quero uma maneira rápida de excluir ~/rendu/test.txt SEM excluir o link simbólico.

Para quem quer saber por quê: Eu tenho um arquivo chamado crypted.xxx na minha área de trabalho, que é criptografado e contém minha senha.

Quando eu quiser atualizar meu arquivo criptografado, eu descriptografo e crie crypted.txt em um diretório especial. Por isso, faço um link para esse arquivo na minha área de trabalho por motivos práticos. Mas depois de olhar para o meu crypted.txt , eu quero excluir rapidamente este crypted.txt (mas não o link na área de trabalho).

    
por Ugo Hed 05.04.2016 / 13:51

2 respostas

10

usando find para encontrar o symlink e, em seguida, usando readlink para obter o caminho completo para o destino em rm :

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "")"' _ {} \;

Ou como você já sabe o nome do link:

rm "$(readlink -f ~/Desktop/test.txt)"
    
por heemayl 05.04.2016 / 14:02
5

Use simplesmente:

printf "" > "$(readlink '/path/to/link')"

para limpar o arquivo ou

rm "$(readlink '/path/to/link')"

para remover o arquivo.

    
por Jacob Vlijm 05.04.2016 / 14:05