Olá a todos, preciso fazer isso no Linux:
- Dado: nome do arquivo 'foo.txt'
- Encontrar: todos os arquivos que são links simbólicos para 'foo.txt'
Como fazer isso? Obrigado!
Olá a todos, preciso fazer isso no Linux:
Como fazer isso? Obrigado!
Respostas:
Depende, se você está tentando encontrar links para um arquivo específico chamado, foo.txt,então esta é a única boa maneira:
find -L / -samefile path/to/foo.txt
Por outro lado, se você está apenas tentando encontrar links para qualquer arquivo que tenha um nome foo.txt, algo como
find / -lname foo.txt
ou
find . -lname \*foo.txt # ignore leading pathname components
-xtype lpara encontrar apenas links simbólicos de lista
find . -lname '*foo.dir*'(corresponde, por exemplo file.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:
$ ls -i foo.txt
41525360 foo.txt
$ find . -follow -inum 41525360
Alternativamente, tente a lnameopção de find, mas isso não funcionará se você tiver links simbólicos relativos, por exemploa -> ../foo.txt
$ find . -lname /path/to/foo.txt
-samefileopção com -Lpara o mesmo efeito, sem ter que procurar o inode você mesmo
foofor um diretório, use ln -diem uma linha:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
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:
symlinks -rv . | grep foo.txt