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, tanto simbólicos quanto difíceis? Se eu precisar de comandos diferentes para cada um, quais são eles?

    
por colin.t.welch 03.01.2010 / 23:01

2 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 -ls em vez de -exec , mas ele mostrará o inode e outras informações do arquivo de destino em vez dos arquivos individuais.

    
por 03.01.2010 / 23:21
2

Se você não tem o GNU Find, você pode fazer isso:

find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)"

Mas não funcionará para links simbólicos.

    
por 07.06.2010 / 15:14