problema resolvido lindamente. Obrigado a todas as pessoas que responderam.
lukmac
8
Como comentei em uma resposta excluída, você pode usar -xtype lpara encontrar apenas links simbólicos de lista
Hasturkun
você pode querer recursar, já que qualquer um dos arquivos apontando para foo.txt pode ser apontado por alguns outros links ... ex: A-> B-> foo.txt, / tmp / C-> B-> foo.txt, etc.
Olivier Dulac
isso pode funcionar também se o seu componente de nome for um diretório pai nomeado no link, pesquisando find . -lname '*foo.dir*'(corresponde, por exemplo file.txt -> ../foo.dir/file.txt)
Yonatan
22
Encontre o número de inode do arquivo e pesquise todos os arquivos com o mesmo número de inode:
Se estiver usando uma versão recente do GNU find, você também pode usar a -samefileopção com -Lpara o mesmo efeito, sem ter que procurar o inode você mesmo
Hasturkun
5
Mas isso também encontrará arquivos em outros sistemas de arquivos que tenham o mesmo número de inode.
DigitalRoss
Se foofor um diretório, use ln -diem uma linha:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77
1
Essa resposta está errada. Um link simbólico não tem o mesmo inode de seu destino. Isso funcionará apenas para um arquivo dentro de uma pasta com link simbólico. Mas não foi isso que foi perguntado.
Jules Lamur
4
Eu prefiro usar o symlinksutilitário, que também é útil ao pesquisar links simbólicos corrompidos. Instalar por:
sudo apt install symlinks
Mostrar todos os links simbólicos na pasta e subpastas atuais:
symlinks -rv .
-r: recursivo
-v: verboso (mostra todos os links simbólicos, não apenas os corrompidos)
Para encontrar um link simbólico específico, basta grep:
Respostas:
Depende, se você está tentando encontrar links para um arquivo específico chamado,
foo.txt,
então esta é a única boa maneira:Por outro lado, se você está apenas tentando encontrar links para qualquer arquivo que tenha um nome
foo.txt
, algo comoou
fonte
-xtype l
para encontrar apenas links simbólicos de listafind . -lname '*foo.dir*'
(corresponde, por exemplofile.txt -> ../foo.dir/file.txt
)Encontre o número de inode do arquivo e pesquise todos os arquivos com o mesmo número de inode:
Alternativamente, tente a
lname
opção defind
, mas isso não funcionará se você tiver links simbólicos relativos, por exemploa -> ../foo.txt
fonte
-samefile
opção com-L
para o mesmo efeito, sem ter que procurar o inode você mesmofoo
for um diretório, useln -di
em uma linha:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Eu prefiro usar o
symlinks
utilitário, que também é útil ao pesquisar links simbólicos corrompidos. Instalar por:Mostrar todos os links simbólicos na pasta e subpastas atuais:
-r
: recursivo-v
: verboso (mostra todos os links simbólicos, não apenas os corrompidos)Para encontrar um link simbólico específico, basta
grep
:fonte