Hola a todos, necesito hacer esto en linux:
- Dado: nombre de archivo 'foo.txt'
- Buscar: todos los archivos que son enlaces simbólicos a 'foo.txt'
¿Cómo hacerlo? ¡Gracias!
Hola a todos, necesito hacer esto en linux:
¿Cómo hacerlo? ¡Gracias!
Respuestas:
Depende, si está tratando de encontrar enlaces a un archivo específico que se llama foo.txt,
, esta es la única buena manera:
find -L / -samefile path/to/foo.txt
Por otro lado, si solo está tratando de encontrar enlaces a cualquier archivo que tenga un nombre foo.txt
, entonces algo como
find / -lname foo.txt
o
find . -lname \*foo.txt # ignore leading pathname components
-xtype l
para buscar solo enlaces simbólicos de la lista
find . -lname '*foo.dir*'
(por ejemplo, coincide file.txt -> ../foo.dir/file.txt
)
Busque el número de inodo del archivo y luego busque todos los archivos con el mismo número de inodo:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
Alternativamente, pruebe la lname
opción de find
, pero esto no funcionará si tiene enlaces simbólicos relativos, por ejemploa -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefile
opción con -L
para obtener el mismo efecto, sin tener que buscar el inodo usted mismo
foo
es un directorio, use ln -di
, en una línea:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Prefiero usar la symlinks
utilidad, que también es útil para buscar enlaces simbólicos rotos. Instalar por:
sudo apt install symlinks
Mostrar todos los enlaces simbólicos en la carpeta y subcarpetas actuales:
symlinks -rv .
-r
: recursivo-v
: detallado (muestra todos los enlaces simbólicos, no solo los rotos)Para encontrar un enlace simbólico específico, simplemente grep
:
symlinks -rv . | grep foo.txt