problema resuelto maravillosamente. Gracias a todas las personas que respondieron.
lukmac
8
Como comenté en una respuesta eliminada, puede usar -xtype lpara buscar solo enlaces simbólicos de la lista
Hasturkun
es posible que desee recurrir, ya que cualquiera de los archivos que apuntan a foo.txt pueden ser señalados por otros enlaces ... ej: A-> B-> foo.txt, / tmp / C-> B-> foo.txt, etc.
Olivier Dulac
esto también puede funcionar si su componente de nombre es un directorio principal nombrado en el enlace, buscando find . -lname '*foo.dir*'(por ejemplo, coincide file.txt -> ../foo.dir/file.txt)
Yonatan
22
Busque el número de inodo del archivo y luego busque todos los archivos con el mismo número de inodo:
Si usa una versión reciente de GNU find, también puede usar la -samefileopción con -Lpara obtener el mismo efecto, sin tener que buscar el inodo usted mismo
Hasturkun
5
Pero esto también encontrará archivos en otros sistemas de archivos que tengan el mismo número de inodo.
DigitalRoss
Si fooes un directorio, use ln -di, en una línea:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77
1
Esta respuesta es incorrecta. Un enlace simbólico no tiene el mismo inodo que su objetivo. Esto solo funcionará para un archivo dentro de una carpeta enlazada simbólicamente. Pero esto no es lo que se preguntó.
Jules Lamur
4
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:
Respuestas:
Depende, si está tratando de encontrar enlaces a un archivo específico que se llama
foo.txt,
, esta es la única buena manera:Por otro lado, si solo está tratando de encontrar enlaces a cualquier archivo que tenga un nombre
foo.txt
, entonces algo comoo
fuente
-xtype l
para buscar solo enlaces simbólicos de la listafind . -lname '*foo.dir*'
(por ejemplo, coincidefile.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:
Alternativamente, pruebe la
lname
opción defind
, pero esto no funcionará si tiene enlaces simbólicos relativos, por ejemploa -> ../foo.txt
fuente
-samefile
opción con-L
para obtener el mismo efecto, sin tener que buscar el inodo usted mismofoo
es un directorio, useln -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:Mostrar todos los enlaces simbólicos en la carpeta y subcarpetas actuales:
-r
: recursivo-v
: detallado (muestra todos los enlaces simbólicos, no solo los rotos)Para encontrar un enlace simbólico específico, simplemente
grep
:fuente