Belirli bir dosya için oluşturulan tüm sembolik bağlar nasıl bulunur ve listelenir?


52

Belirli bir dosya veya dizin için çeşitli yollarda birçok sembolik bağlantı oluşturmuştum. Oluşturulan sembolik link yollarının tam listesini istiyorum (konum).

Örnek:

~/PicturesDizin için birçok dizinde sembolik linkler oluşturdum . Buradaki bütün sembolik bağlantıları nasıl listeleyebilirim ~/Pictures?

Mümkün mü? Eğer evet ise, o zaman nasıl?


Kapsamlı arama yapmanız gerekir, sabit bağlantılar için olduğu gibi saklanan sayım yoktur. Find'ı kullanarak cevaplardan birine bakın.
ctrl-alt-delor

Yanıtlar:


42

İşte bir örnek:

find -L /dir/to/start -xtype l -samefile ~/Pictures

veya, belki daha iyi:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

gibi bazı hataların kurtulmak için Permission denied, Too many levels of symbolic linksya da File system loop detectedhangi finddoğru izinlere veya diğer durumlar olmadığında onları atar.

  • -L - Sembolik bağları takip edin.

  • -xtype l - Dosya sembolik bağdır

  • -samefile name- Dosya olarak aynı inode anlamına gelir name. Etkin -Lolduğunda, bu sembolik bağları içerebilir.

Notlar:

  • -xtype l1 rakamını değil küçük harf L'yi kullanın .
  • MacOS / Darwin günü, -xtypeolduğu -type.

Bir yol içeren sembolik bağlantıyı bulmak için komut değiştirilebilir mi? örn. ~ / Pictures / A, ~ / Pictures / A / B / C ya da ~ / Pictures> alt dizinlerindeki herhangi bir dosyaya bağlanabilecek sistemdeki dosyalar arasında
snowbound

7

Çok basit, kullanım seçeneği -lname:

find / -lname /path/to/original/dir

Kimden man find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

Not : Sembolik bağlantıların uzak bir sistem içeren herhangi bir yerde olabileceğini unutmayın (eğer dosya paylaşıyorsanız), bu yüzden hepsini bulamayabilirsiniz.


Ayrıca, sembolik bağlantı göreceli bir yol ise, ../diro zaman /path/to/original/dirbir desen kullanabilir ve yanlış pozitifleri yok edebilirsiniz-lname \*dir
Jason S

2

Bunu dene :

ls -i ~/

277566 Pictures

find . -follow -inum 277566(aynı inode numarasına sahip dizinleri bulun )

Tüm sembolik bağlantı yollarını gösterecektir.


4
Bu sembolik linkleri değil sert linkleri bulacaktır. Sabit bağlantılar inode numaralarını paylaşır. sembolik bağların farklı inode numaraları vardır. sembolik bir bağlantının inode'unun blok listesinin yerine bir yolu vardır.
hildred

soru sert veya yumuşak bir sembolik bağlantıdan bahsetmedi
nux

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.