como saber se um diretório é referenciado por um symlink

3

Existe um comando que eu poderia executar para descobrir se um diretório é referenciado por um symlink em algum lugar da máquina.

ou seja:

pwd =>  /home/user/source/

vdir 
lrwxrwxrwx 1 user group   24 2011-04-08 10:59 Symlink -> /home/user/source/Test
drwxr-xr-x 2 user group 4096 2011-04-08 10:59 Test

Usando esse exemplo, quero saber onde encontrar o Symlink porque ele faz o teste de referência.

Eu uso o Ubuntu 10.04.

    
por yvoyer 08.04.2011 / 17:08

2 respostas

1

Talvez você possa tentar algo como:

sudo find / -lname /path/to/your/file

Mas cuidado, pois alguns links podem ser definidos com caminhos relativos.

Ou você pode listar todos os links simbólicos e o grep para o seu arquivo usando:

sudo find / -type l | grep /path/to/your/file

(o "l" em "-tipo l" não é o número um, mas sim L)

Mas cada método tem algumas desvantagens. Talvez alguém saiba melhor?

    
por 08.04.2011 / 18:05
1

Você tem que escanear todo o sistema de arquivos para softlinks, resolvê-los e ver se eles apontam para o mesmo local. Não tente fazer uma comparação de texto do destino do link, pois ele pode passar por outro hard ou softlink; você precisa comparar inodes provavelmente.

    
por 08.04.2011 / 17:12