Linux’un Arama Mekanizması

Her geçen gün gelişen teknolojide nerede olursanız, hangi ürünü kullanırsanız kullanın bir karmaşaya düştüğünüz oluyordur. Arama mekanizmalarını kullanarak bu karşamlığı azaltmak isteriz. Genellikle bilgiye ulaşmak için Google (arama motorları), bazı zamanlar kullandığınız programların search mekanizmasını kullanırız. Ama bunların yetersiz olduğu noktalarda oluyor mesela elinizde yaptığınız projeye ait yüzlerce dosya olmuş bir yerde hata yapmışsınız yada bir kelimeyi bulmalısınız. Artık onu değiştirmek istiyorsunuz size kim yardım edecek ? Google olmaz bilgisayarınızdaki dosyalarda aramaya, search programlarımı sadece birkaç tanesi dosyanın uzantısı ne olursa olsun içine girip aradığınız kelimeyi bulup size çıkartabiliyor ama hangisi acaba yada nerden bulacaksınız o programı derken 1 sn; o dosyalar sizin bilgisayarınız da olduğuna göre işletim sisteminiz size en iyi yardımı yapacak program olmalı değil mi. Linux kullanıyorsanız size birkaç tavsiyem olacak:

1.Belgeler dizininde “emre” kelimesinin geçtiği yerleri bulmak için:

$ grep -r ‘emre’ /home/ecamalan/Belgeler

Komutunu kullanabilirsiniz .. bu komutta geçen grep bir fonksiyon adıdır ve bir kalıbı aramak için kullanılmaktadır.
Grep ten sonar gelen karakterler ise şu şekilde anlamlar ifade etmektedir;

-i büyük küçük harf gözardı etme (ignore)
-n satır numaraları (line number)
-r tekrar eden arama (recursively)

Tırnak içindeki ‘emre’ aranılan kelimedir tırnak içinde olmasa da olur.
Sonuç olarak /home/ecamalan/Belgeler dizinindeki içinde emre geçen tüm dosyaları size sıralayacaktır.

2.Aynı şekilde

find . –name ‘*’ | xargs grep ‘emre’ –sl

komutu ilede o anda bulunduğunuz dizindeki , içinde emre geçen tüm kelimeleri bulabilirsiniz.
cd /home/ecamalan/Belgeler/~$ ile belgeler dizinine geçtikten sonra konsolda bu komutu yazarak çalıştırabilirsiniz. Burada geçen –name kelimesi bize büyük küçük harfe duyarlı arama yaptığımızı gösterir.(Case Sensitive) duyarlı olmasın isterseniz –iname kullanmanız yeterli olacaktır.

3.Bazen ise kelimenin bir kısmını hatırlarsınız, tamamını hatırlamadığınız kelimeler içinse şu kodu kullanabilirsiniz;

find / -name ‘emr*’
yada
find / -name ‘em??_*’

Bikaç tane daha harf olduğunu ama sayısını bilmediğimizi gösteriyor, her bir soru işareti ise 1 harf yerine kullanılıyor yani ; em??_* bize em den sonra 2 harf var sonra bir alt çizgi var ve sonrada kaç tane olduğunu bilmediğimiz karakterler var anlamındadır…

4.Son olarak daha fazla bilgiye ihtiyaç duyarsanız ;
Konsolda

a.grep –help
b.man grep
c.man find
d.grep –find

komutlarını kullanabilirsiniz. Tüm bunların yanında 2. Maddede verdiğim yöntemle kubuntuda 3030 dosya arasında sadece 1 saniye gibi küçücük bir zamanda sonuç aldığımı belirtmeden geçemeyeceğim.. Aradığım kelimeyi dosyaların içine girip tek tek bulduğu gibi birde kısayollarını konsolda listelemiş oluyor..
Kolay gelsin..

Emre Çamalan

camalan.net

Bu yazı toplam 54 kere görüntülenmiştir.

0saves
Eğer yazıyı beğendiyseniz lütfen yorum bırakın veya diğer yazılardan haberdar olmak için RSS'e üye olun..

İlgili Yazılar:

Yazar Hakkında


Yazar:

Hakkında / İlgi Alanları: Php, Python, Java, Güvenlik, Algoritmalar, Fotoğraf, Kitap, Sinema
Kategori: Linux İpuçları, August 26th, 2010

Yazarlarımızdan , bu yazı dahil toplam 28 adet yazı yazmış.

Cevap yaz