Usando GNU find
, esto encontrará los archivos que están vinculados de forma rígida o simbólica a un archivo:
find -L /dir/to/start -samefile /tmp/orig.file
No he visto un comando para esto y no es una tarea fácil, ya que el archivo de destino no contiene información sobre qué archivos de origen apuntan a él.
Esto es similar a los enlaces "fijos", pero al menos siempre están en el mismo sistema de archivos, por lo que puede hacer un find -inode
para enumerarlos. Los enlaces suaves son más problemáticos ya que pueden cruzar sistemas de archivos.
Creo que lo que vas a tener que hacer es básicamente realizar un ls -al
en cada archivo en toda su jerarquía y use grep
para buscar -> /path/to/target/file
.
Por ejemplo, aquí hay uno que ejecuté en mi sistema (formateado para facilitar la lectura; esas dos últimas líneas están en realidad en uno línea en la salida real):
pax$ find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /usr/share/applications'
lrwxrwxrwx 1 pax pax 23 2010-06-12 14:56 /home/pax/applications_usr_share
-> /usr/share/applications
Inspirado por el comentario de Gordon Davisson. Esto es similar a otra respuesta, pero obtuve los resultados deseados usando exec. Necesitaba algo que pudiera encontrar enlaces simbólicos sin saber dónde se encontraba el archivo original.
find / -type l -exec ls -al {} \; | grep -i "all_or_part_of_original_name"