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 lpara 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 lnameopción de find, pero esto no funcionará si tiene enlaces simbólicos relativos, por ejemploa -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefileopción con -Lpara obtener el mismo efecto, sin tener que buscar el inodo usted mismo
fooes un directorio, use ln -di, en una línea:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Prefiero usar la symlinksutilidad, 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