Localização dos links simbólicos apontam para o mesmo destino [duplicado]

0

Como posso encontrar todos os links simbólicos em um diretório que aponta para o mesmo destino?

Por exemplo, aqui está uma lista de arquivos em um diretório:

a.txt
b.txt
a -> target1
c -> target1
m -> target2
n -> target3
c.txt
z -> target1

Quero obter uma lista do que está ligado a target1 . Então a saída esperada será:

a
c
z
    
por Omri 29.12.2016 / 11:29

1 resposta

2

Considere a seguinte estrutura de diretório:

lrwxrwxrwx [...] a -> target1
lrwxrwxrwx [...] c -> target1
lrwxrwxrwx [...] m -> target2
lrwxrwxrwx [...] n -> target3
lrwxrwxrwx [...] t -> z
-rw-r--r-- [...] target1
-rw-r--r-- [...] target2
-rw-r--r-- [...] target3
lrwxrwxrwx [...] z -> target1

Use o GNU find para encontrar todos os arquivos apontando para o mesmo inode:

find -L . -samefile target1
  • -L segue links simbólicos, mesmo se você tiver links simbólicos recursivos
  • -samefile localiza todos os arquivos que apontam para o mesmo inode que o dado parâmetro target1

A saída no diretório acima ficaria assim:

./z
./a
./target1
./c
./t
    
por 29.12.2016 / 11:52