Sinopsis
locate [-0Scims] [-l sınır] [-d veritabanı] şablon ...
Açıklama
locate programı, belirtilen şablonla eşleşen tüm yol adları için bir veritabanını arar. Veritabanı periyodik olarak (genellikle haftalık veya günlük) yeniden hesaplanır ve halka açık olarak erişilebilen tüm dosyaların yol adlarını içerir.
Kabuk genel arama (globbing) ve tırnak içine alma karakterleri (“*”, “?”, “\”, “[” ve “]”) şablonda kullanılabilir, ancak kabuktan kaçırılmaları (escaped) gerekecektir. Herhangi bir karakterin önüne ters eğik çizgi (“\”) getirilmesi, sahip olabileceği özel anlamı ortadan kaldırır. Eşleşme, eğik çizgiler (“/”) dahil olmak üzere hiçbir karakterin açıkça eşleşmesi gerekmemesi yönüyle farklılık gösterir.
Özel bir durum olarak, genel arama karakteri içermeyen bir şablon (“foo”), sanki “foo” şeklindeymiş gibi eşleştirilir.
Geçmişte locate yalnızca 32 ile 127 arasındaki karakterleri saklardı. Mevcut uygulama, satır sonu (‘\n’) ve NUL (‘\0’) hariç tüm karakterleri saklar. 8 bitlik karakter desteği, düz ASCII dosya adları için fazladan yer harcamaz. 32'den küçük veya 127'den büyük karakterler 2 baytta saklanır.
Aşağıdaki seçenekler mevcuttur:
-0: Yol adlarını varsayılan NL (satır sonu, karakter kodu 10) yerine bir ASCII NUL karakteri (karakter kodu 0) ile ayrılmış olarak yazdırır.-S: Veritabanı hakkında bazı istatistikleri yazdırır ve çıkar.-c: Normal çıktıyı bastırır; bunun yerine eşleşen dosya adlarının sayısını yazdırır.-dveritabanı: Varsayılan dosya adı veritabanı yerine belirtilen veritabanında arama yapar. Birden fazla -d seçeneğine izin verilir. Eklenen her -d seçeneği, belirtilen veritabanını aranacak veritabanları listesine ekler.veritabanı seçeneği, iki nokta üst üste ile ayrılmış bir veritabanı listesi olabilir. Tek bir iki nokta üst üste işareti, varsayılan veritabanına bir referanstır.
$ locate -d $HOME/lib/mydb: fooönce $HOME/lib/mydb içinde “foo” dizesini arayacak ve ardından /var/db/locate.database içinde arayacaktır.
$ locate -d $HOME/lib/mydb::/cdrom/locate.database fooönce $HOME/lib/mydb içinde “foo” dizesini arayacak, ardından /var/db/locate.database içinde ve son olarak /cdrom/locate.database içinde arayacaktır.
$ locate -d db1 -d db2 -d db3 şablonşununla aynıdır:
$ locate -d db1:db2:db3 şablonveya
$ locate -d db1:db2 -d db3 şablonVeritabanı adı olarak - verilirse, bunun yerine standart girdi okunacaktır. Örneğin, veritabanınızı sıkıştırabilir ve şu komutu kullanabilirsiniz:
$ zcat database.gz | locate -d - şablonBu, hızlı bir CPU'ya, az RAM'e ve yavaş G/Ç'ye (I/O) sahip makinelerde yararlı olabilir. Not: Standart girdi için yalnızca tek bir şablon kullanabilirsiniz.
-i: Hem şablondaki hem de veritabanındaki büyük/küçük harf ayrımlarını yoksayar.-lsayı: Çıktıyı belirtilen sayıdaki dosya adıyla sınırlandırır ve çıkar.-m: stdio(3) kütüphanesi yerine mmap(2) kullanır. Bu varsayılan davranıştır ve çoğu durumda daha hızlıdır.-s: mmap(2) yerine stdio(3) kütüphanesini kullanır.
Ortam
LOCATE_PATH Ayarlanmışsa ve boş değilse locate veritabanının yolu; -d seçeneği belirtilmişse yoksayılır.
Dosyalar
/var/db/locate.database locate veritabanı /usr/libexec/locate.updatedb locate veritabanını güncellemek için betik /System/Library/LaunchDaemons/com.apple.locate.plist Veritabanının yeniden oluşturulmasını başlatan görev
Ayrıca Bakınız
find(1), whereis(1), which(1), fnmatch(3), locate.updatedb(8)
Woods, James A., “Finding Files Fast”, ;login, 8:1, ss. 8-10, 1983.
Geçmiş
locate komutu ilk olarak 4.4BSD'de göründü. Birçok yeni özellik FreeBSD 2.2'de eklendi.
Hatalar
locate programı, mevcut olan bazı dosyaları listelemeyebilir veya sistemden kaldırılmış dosyaları listeleyebilir. Bunun nedeni, locate'in yalnızca veritabanında bulunan dosyaları bildirmesidir; bu veritabanı genellikle /System/Library/LaunchDaemons/com.apple.locate.plist görevi tarafından haftada yalnızca bir kez yeniden oluşturulur. Daha geçici nitelikteki dosyaları bulmak için find(1) komutunu kullanın.
locate veritabanı tipik olarak “nobody” kullanıcısı tarafından oluşturulur ve locate.updatedb(8) yardımcı programı, “nobody” kullanıcısı, “nobody” grubu veya herkes (world) tarafından okunamayan dizinleri atlar. Örneğin, HOME dizininiz herkes tarafından okunabilir değilse, dosyalarınızın hiçbiri veritabanında yer almaz.
locate veritabanı bayt sırasından (byte order) bağımsız değildir. Veritabanlarını farklı bayt sırasına sahip makineler arasında paylaşmak mümkün değildir. Mevcut locate uygulaması, her iki mimari de aynı tam sayı (integer) boyutunu kullanıyorsa, ana makine bayt sırasındaki (host byte order) veya ağ bayt sırasındaki (network byte order) veritabanlarını anlar. Yani bir FreeBSD/i386 makinesinde (little endian), SunOS/sparc makinesinde (big endian, net) oluşturulmuş bir locate veritabanını okuyabilirsiniz.
locate yardımcı programı çoklu baytlık (multibyte) karakterleri tanımaz.
macOS 26.4 11 Aralık 2020 macOS 26.4