Localizando todos os links simbólicos e físicos para um arquivo no UNIX


9

Se eu tiver um arquivo específico em um sistema de arquivos UNIX, existe uma maneira de usar o bash para encontrar todos os links para esse arquivo, simbólicos e físicos? Se eu precisar de comandos diferentes para cada um, quais são eles?

Respostas:


8

Tente isso com o GNU find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

Exemplo de saída:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

Você pode usar em -lsvez de, -execmas ele mostrará o inode e outras informações do arquivo de destino, em vez dos arquivos individuais.


Esta saída está mostrando links físicos e sym? Links Sym indicados por -> arrow?
aaaidan

@aaaidan: Sim, está correto. O número de inode x1 e x2 são os mesmos, indicando que são links físicos. A seta indica um link simbólico. Usar -Le -samefilefaz com que ambos sejam listados. Se você omitir -L, os links simbólicos não serão seguidos (consulte man find).
Pausado até novo aviso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.