Encontrar todos los enlaces simbólicos y duros a un archivo en UNIX


9

Si tengo un archivo específico en un sistema de archivos UNIX, ¿hay alguna manera de usar bash para encontrar todos los enlaces a ese archivo, tanto simbólicos como duros? Si necesito diferentes comandos para cada uno, ¿cuáles son?

Respuestas:


8

Prueba esto con GNU find:

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

Salida de ejemplo:

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

Puede usar en -lslugar de, -execpero mostrará el inodo y otra información del archivo de destino en lugar de los archivos individuales.


¿Esta salida muestra enlaces duros y simbólicos? Enlaces Sym indicados por -> flecha?
aaaidan

@aaaidan: Sí, eso es correcto. El número de inodo de x1 y x2 es el mismo que indica que son enlaces duros. La flecha indica un enlace simbólico. El uso -Ly -samefilehace que ambos se enumeren. Si omite -L, los enlaces simbólicos no se siguen (ver man find).
Pausado hasta nuevo aviso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.