Örneklerle Linux’ta Locate Komutu Nasıl Kullanılır

Merhabalar,

 

Linux üzerinde çalışırken en yaygın işlemlerden biri dosya ve dizin aramaktır. Linux sistemlerinde, en çok kullanılanları find ve locate  gibi dosyaları aramanıza izin veren birkaç komut vardır.

Locate komutu, dosya ve dizinleri adlarına göre aramanın en hızlı ve en basit yoludur.

Bu yazımızda locatelkomutunun nasıl kullanılacağını anlatacağız.

Dağıtıma ve sistemin nasıl sağlandığına bağlı olarak, locate paketi Linux sisteminize önceden yüklenmiş olabilir veya olmayabilir.

Locatae programının kurulu olup olmadığını kontrol etmek için terminalinizi açın ve locate yazın ve Enter’a basınız. Paket kuruluysa, sistem şunu gösterecektir: locate: no pattern to search for specified . Aksi takdirde, locate komutu bulunamadı (locate command not found) gibi bir şey göreceksiniz.

Locate kurulu değilse, dağıtımınızın paket yöneticisini kullanarak kolayca kurabilirsiniz.

 

Ubuntu ve Debian üzerinde locate kurulumu:

sudo apt update

sudo apt install mlocate

 

CentOS ve Fedora üzerinde locate kurulumu:

sudo yum install mlocate

 

Locate Komutu Nasıl Çalışır ?

 

Locate komutu, updatedb komutu tarafından oluşturulan bir veritabanı dosyası aracılığıyla belirli bir kalıbı arar. Bulunan sonuçlar, her satırda bir tane olmak üzere ekranda görüntülenir.

mlocate paketinin kurulumu sırasında, her 24 saatte bir updateb komutunu çalıştıran bir cron job oluşturulur. Bu, veritabanının düzenli olarak güncellenmesini sağlar. Cron job hakkında daha fazla bilgi için /etc/cron.daily/mlocate dosyasına bakabilirsiniz.

Veritabanı, updatedb‘yi root veya sudo ayrıcalıklarına sahip kullanıcı olarak çalıştırarak manuel olarak güncelleyebilirsiniz.

sudo updatedb

 

 

Güncelleme işlemi, dosya ve dizinlerin sayısına ve sisteminizin hızına bağlı olarak biraz zaman alabilir.

Veritabanı güncellemesinden sonra oluşturulan dosyalar, locate sonuçlarında gösterilmeyecektir.

Dosya sisteminde arama yapan daha güçlü find komutuyla karşılaştırıldığında, locate çok daha hızlı çalışır ancak birçok özellikten yoksundur ve yalnızca dosya adıyla arama yapılabilir.

Locate Komutu Nasıl Kullanılır:

Locate komutunun söz dizimi aşağıdaki gibidir.

En temel biçiminde, herhangi bir seçenek olmadan kullanıldığında, locate komutu arama düzeniyle eşleşen ve kullanıcının okuma iznine sahip olduğu tüm dosya ve dizinlerin absolute path (mutlak yolunu) ‘ i yazdırır.

Örneğin, linuxdata45.txt dosyayı aramak için aşağıdaki komutu yazabiliriz.

locate linuxdata45.txt


 

Sonuç listesi çok uzunsa, daha iyi okunabilirlik için çıktıyı less komutuna yönlendirebiliriz.

locate linuxdata45.txt | less

 

Locate komutu, joker karakter * gibi küresel karakterler içeren kalıpları da kabul eder. Kalıp, küresel karakter içermediğinde, komut *PATTERN* i arar. Bu nedenle, önceki örnekte, adlarında arama pattern`nını  içeren tüm dosyalar görüntülendi.

wildcard (Joker) karakter, sıfır, bir veya daha fazla karakteri temsil etmek için kullanılan bir semboldür. Örneğin, sistemdeki tüm  txt dosyalarını aramak için aşağıdaki komutu yazabiliriz.

locate *.txt

Arama sonuçlarını sınırlamak için -n seçeneğini ve ardından görüntülenmesini istediğiniz sonuç sayısını kullanabiliriz. Aşağıdaki komut tüm .php dosyalarını arayacak ve yalnızca 10 sonuç gösterecektir.

locate -n 10 www/wordpress/*.php

 

 

Varsayılan olarak, bulun büyük/küçük harfe duyarlı aramalar gerçekleştirir. -i (–ignore-case) seçeneği, konuma büyük/küçük harfe duyarlı olmayan bir arama çalıştırmasını ve büyük/küçük harfe duyarlı olmayan bir arama yapmasını söyler.Deneyelim hemen.

locate -i komutlar.txt

 

 

Tüm eşleşen girişlerin sayısını görüntülemek için -c (–count) seçeneğini kullanın. Aşağıdaki komut README.MD isimli tüm dosyaların sayısını döndürür.

locate -c -i README.MD

 

Varsayılan olarak locate bulunan dosyaların dosya sisteminde hala bulunup bulunmadığını kontrol etmez. Bir dosyayı en son veritabanı güncellemesinden sonra sildiyseniz ve dosya arama modeliyle eşleşiyorsa, arama sonuçlarına dahil edilecektir.Bu çok önemli locate ile bulunan bir dosya aradığınız dizinde  gerçekten var olduğu anlamına gelmez.Updatedb veri tabanının içinde dosya mevcut gözüküyor.Siz dosyayı sildiniz sonra veri tabanı güncelleştirmeyi çalıştırmadınız (24 saatte bir otomatik olarak bir kere güncelleştirme yapılır.)Dosya veri tabanı içinde gözüktüğü için locate size dosyayı bulduğunu söyleyecek.Hadi deneyelim.

 

locate ile linux-data-net.txt isimli dosyayı arıyorum.dosya mevcut.Sonra rm komutu ile dosyayı kaldırıyorum.Tekrar locate komutu ile arıyorum hala dosya var gözüküyor.Bu nedenle locate ile arama yapmadan önce mutlaka updatadb komutu ile veri tabanı güncellemesini yapmalıyız.

 

 

Yada aşağıdaki gibi locate çalıştırıldığında var olan dosyaların adlarını görüntülemek için -e (–existing) seçeneğini kullanın. Örneğin, aşağıdakiler yalnızca mevcut .txt dosyalarını döndürür.Bakın altta KOMUTLAR klasörünün altında sadece gerçekte mevcut olan  2 adet txt uzantılı dosyanın bilgisini döndü.

locate -e KOMUTLAR/*.txt

 

 

Daha karmaşık bir arama yapmanız gerekiyorsa, kalıplar yerine temel bir normal ifade kullanarak arama yapmanızı sağlayan -r (–regexp) seçeneğini kullanın. Bu seçenek birden çok kez belirtilebilir.
Örneğin, sisteminizdeki tüm .hd ve .cd uzantılı dosyaları aramak ve büyük/küçük harf durumunu yok saymak için aşağıdaki komutu çalıştırabiliriz.

locate --regex -i "(\.hd|\.cd)"

 

Bu eğitim yazımızında sonuna geldik.Umarım sizlere için faydalı olur.

 

 

Bu eğiticiye oy ver
[Total: 3 Average: 5]
Firat CANOĞLU TAĞ