çoğu bağlantıya sahip dosyaları bulma


0

En çok bağlanan bağlantıları içeren unix'teki ilk 10 dosyayı nasıl bulabilirim?

unix  bash  find 

3
Hangi bağlantılardan bahsediyorsun? Sabit linkler, sembolik bağlantılar, html linkleri?
innaM

Yanıtlar:


1

Bu iş gibi görünüyor:

$ find . -type l -exec readlink {} \; | sort | uniq -c | sort -r | head

Gösterilen dosya sayısının 10'dan farklı olmasını istiyorsanız, istediğiniz sayıyı argüman olarak ekleyin head.

Bu, geçerli dizinin altındaki sembolik bağlantıları arayacak, başka bir dizinde arama .yapmak için istediğiniz yolu ile değiştireceksiniz .


1
Bulunması gerekiyor. tipi l vb veya / tipi l bulmak gibi arama yapmak istediğini dizin
Zengin Bradshaw

Her dosya için bir işlem yürütmek zorunda kalmadan bağlantı hedefini yazdırmak için daha verimli olan -printf '% l \ n'. Ve ikinci sıralama, sayısal sıralama için -nr olmalıdır?
Peter Cordes,

Sadece tüm bağlantılar mutlak olmadığı sürece bunun işe yaramadığını farkettim. Bir bağlantı hedefi foo / bar ise ve aynı dosyaya bir başka bağlantı / home / peter / foo / bar ise, bunlar aynı sayılmaz.
Peter Cordes,

1

find -type f -ls | sort -rn -k 4 | head -10

Çıktı azalan bağlantı sayısı sırasına göre sıralanır. (-r = geri, -n = sayısal sıralama, -k 4 = sütun 4'te sırala)

Eğer sembolik bağlantılar istiyorsanız, diğer cevaplara bakmak zorundasınız. Kolay cevap veren tek yoruma cevap verdim. : P


-1

Size bir dosyada kaç tane bağlantı olduğunu söyleyen bir şey olduğuna inanmıyorum.

Haklıysam, dizin ağacınızı bağlantılar için aramanız ve onları bağladıkları dosyaya göre sıralamanız gerekir.

findKomut ile bağlantıları listeleyebilirsiniz -type lancak linkleri bulabilirsiniz en özel işlem kullanmadıkça, bağlantı giderir görmüyorum.

O zaman dene:

sudo find -L / -type l -exec ls {} \;

bağlantıları listelemek için. Sonra çıktısını yönlendirmek sort, uniqböylece ve.

Bunu henüz test etmedim (zaten tamamlanmadı): Dosya sistemimde bulmak için çoğaltılmış bağlantılarım olup olmadığından emin değilim, bu da testi anlamlı hale getirecek.


1
Bunların hepsi sembolik linklerle ilgili. ls -lsize sabit bağlantıların sayısını gösterecektir.
innaM

-exec ls {}bağlantıyı gösterecek ancak bağlantı kurmayacağını gösterecektir. Hedefi görmek için -lsveya tuşunu kullanabilirsiniz -exec ls -l {}.
Dennis Williamson

1
Ayrıca, -Lbağlantıları çözecek ve type -lbulamayacaksınız.
Dennis Williamson,

Dediğim gibi, denemedim. Fikir, 'cevap orada olabilir ...'
demekti

-L tipi L, kırık sembolik işaretleri, BTW'yi bulma yoludur.
Peter Cordes
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.