sembolik bağlantı: bu dosyaya bağlanan tüm dosyaları bulun


115

Merhabalar, bunu linux'ta yapmam gerekiyor:

  • Verilen: dosya adı 'foo.txt'
  • Bulun: 'foo.txt'ye sembolik bağ olan tüm dosyalar

Nasıl yapılır? Teşekkürler!


Yanıtlar:


132

Duruma göre, çağrılan belirli bir dosyaya bağlantılar bulmaya çalışıyorsanız, o foo.txt,zaman bu tek iyi yoldur:

find -L / -samefile path/to/foo.txt

Öte yandan, adı verilen herhangi bir dosyanın bağlantılarını bulmaya çalışıyorsanız foo.txt,

find / -lname foo.txt

veya

find . -lname \*foo.txt # ignore leading pathname components

sorun güzelce çözüldü. Cevap veren herkese teşekkürler.
lukmac

8
Silinen bir cevaba yorum yaptığım gibi, -xtype lsadece liste sembolik bağlantılarını bulmak için kullanabilirsiniz
Hasturkun

foo.txt dosyasını gösteren herhangi bir dosyanın kendisi başka bağlantılar tarafından gösterilebileceğinden, yinelemek isteyebilirsiniz ... örn: A-> B-> foo.txt, / tmp / C-> B-> foo.txt, vb.
Olivier Dulac

ad bileşeniniz bağlantıda adı geçen bir üst dizin ise bu da işe yarayabilir, arama yaparak find . -lname '*foo.dir*'(örn. eşleşir file.txt -> ../foo.dir/file.txt)
Yonatan

22

Dosyanın inode numarasını bulun ve ardından aynı inode numarasına sahip tüm dosyaları arayın:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

Alternatif olarak lnameseçeneğini deneyin find, ancak göreceli sembolik bağlarınız varsa bu işe yaramayacaktır, örn.a -> ../foo.txt

$ find . -lname /path/to/foo.txt

3
GNU -samefile-L
find'ın

5
Ancak bu, aynı inode numarasına sahip olan diğer dosya sistemlerindeki dosyaları da bulacaktır.
DigitalRoss

Eğer foobir dizin, kullanımıdır ln -di: bir satır halinde,find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77

1
Bu cevap yanlış. Bir sembolik bağ, hedefiyle aynı inode'a sahip değildir. Bu yalnızca sembolik bağlantılı bir klasör içindeki bir dosya için çalışacaktır. Ama sorulan bu değildi.
Jules Lamur

4

symlinksBozuk sembolik bağları ararken de kullanışlı olan yardımcı programı kullanmayı tercih ediyorum . Yükleyen:

sudo apt install symlinks

Geçerli klasör ve alt klasörlerdeki tüm sembolik bağları göster:

symlinks -rv .
  • -r: özyinelemeli
  • -v: ayrıntılı (yalnızca bozuk olanları değil, tüm sembolik bağları göster)

Belirli bir sembolik bağlantıyı bulmak için sadece grep:

symlinks -rv . | grep foo.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.