FreeBSD'de dosya nasıl bulunur


14

example.filenameFreeBSD sunucumdaki tüm kopyalarını bulmaya çalışıyorum . Bunu yapmanın en iyi / en kolay / en etkili yolu nedir?


1
Cevaplar benzer olsa da, Linux mu yoksa FreeBSD mi kullandığınızı netleştirmek isteyebilirsiniz. Aynı şey değiller.
Greg Hewgill

OS daha spesifik hale getirmek için başlık düzenlendi
Ian

Bu muhtemelen FreeBSD etiketli olmalıdır, ama bunu yapmak için itibar eksik.
mikl

Yanıtlar:


18
find / -name example.filename

2
Güvenilir, ancak yavaş. Bazen çok yavaş.
dmckee --- ex-moderatör kedi yavrusu

3
ihtiyaca bağlı olarak uygun olabilecek diğer 'find' bayrakları: -type f (aynı ada sahip dizinler veya sembollerle uğraşmaz) -ls (dosya boyutu gibi ayrıntıları göstermek için, örneğin dosyalar aynıysa) ancak farklı içerikler)
Zac Thompson

19
locate filename

Çok daha hızlı daha find, eğer sen hizmetini bulun çalıştırıyorsanız ve sadece zaman var olan dosyaları bulur updatedb(bir cron işi kontrolü altında befor Yukleme gece) son koştu.

Sen edebilirsiniz çalıştırmak updatedbelle, ama bundan bile daha yavaştır cletus anlaşılacağı ve kök gerektirir. Bazen bir sürü yeni şey yükledikten sonra veritabanını el ile güncelliyorum.find


3
Tespit sadece db oluşturmak için çalışan hizmetiniz varsa çalışır (ne denir unutun). Ayrıca zaman gecikmesi yaşayabilir (aradığınız dosya son derlemeden bu yana eklenmiş olabilir).
cletus

Tel üzerinde yapılan düzenlemeler ve yorumlar. Güzel. Elbette, her iki konuda da haklısın.
dmckee --- ex-moderatör kedi yavrusu

4
Kendinizi find /haftada bir kereden fazla herhangi bir büyük ağaç üzerinde yapıyor veya bulursanız , locatehizmeti çalıştırmak muhtemelen faydalıdır, çünkü locate(1)çok daha hızlıdır.
Drew Stephens

@cletus Running veritabanını sudo periodic weeklygünceller locate. İstediğiniz dosyaları içerebilecek herhangi bir yükleme veya indirme işleminden sonra bunu çalıştırın.
Basil Bourque

2

Eğer yerleştirme (aka slocate) yüklediyseniz,

locate example.filename

locate, her gece makinenizdeki tüm dosyaları yeniden endeksleyen bir cron işi çalıştırır. Bu nedenle her zaman güncel değildir.


2

Bazen dosyaları belirli bir dizin düzeyinde bulmak istersiniz. Bu durumda, kabuk joker karakterlerini kullanmak uygun olabilir:

ls /data/*/example.filename

Açıkçası bu sadece katı bir dizin yapınız varsa işe yarar.


1

locate

Diğerlerinin de belirttiği gibi, locatebir dosya bulmanın hızlı yoludur. Bu komut, dosya ve klasör adlarının önceden derlenmiş bir dizinini kullanır. Bu ad veritabanı, dosya sisteminizi taramak yerine aranır.

locate example.filename 

Büyük / küçük harfe duyarlı olmamak için ekleyin -i.

locate -i eXAmPle.FileName

locateVeritabanını güncelle

Tarafından kullanılan veritabanı locategüncel olmalıdır. İstediğiniz dosyayı içerebilecek bir yükleme veya indirme işlemi yaptıktan sonra locateveritabanını güncellemelisiniz .

locateVeritabanı sonunda FreeBSD sistem tarafından otomatik olarak güncellenecektir. Bu görevi içeren haftalık bir dizi iş vardır. Bu işler /etc/periodic/weekly/310.locatekomut dosyasında listelenir .

locateVeritabanının erken güncellenmesini zorlamanın en kolay yolu , haftalık işlerin şimdi yapılmasını zorlamaktır.

sudo periodic weekly

Ya da tüm normal işleri yapmaya bile zorlayabilirsiniz. Yeni bir FreeBSD sistemi kurduktan hemen sonra bunu yapmak isteyebilirsiniz.

sudo periodic daily weekly monthly

locateVeritabanını güncellemek için başka yollar kullanıyorsanız , güvenli olmama hakkında bir mesaj alabilirsiniz, bu da sisteminizin tüm dosyalarının adlarını FreeBSD sistemindeki herhangi bir kullanıcıya gösterir. periodicRotanın kullanılması bu sorunu önler.



0

Bazen yaparım


  find . | grep example.filename

ancak muhtemelen oldukça verimsiz.


Evet, bu her şeye karşılık geliyor, aradığınız tek bir isim hariç her şeyi atar. Bunun yerine, her şeyi yazdırmadan ve ekstra bir grep işlemi çalıştırmadan tamamen aynı şeyleri yapan 'find -name "example.filename"' i yapabilirsiniz.
Mihai Limbăşan
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.