Bir Dizindeki Dosyaların İçinde Metin Arama

linux Yorum Ekle

Programlama da veya günlük bilgisayar kullanımında bir fonksiyon adı, değişken adı veya herhangi bir metnin hangi dosyalarda geçtiğini öğrenmemiz gerekir. Bu gibi durumlarda linux kullanıcıları aşağıdaki komut dizisi ile bu dosyalara ulaşabilirler.

find /var/www/ -type f -name "*.php"|xargs grep -l 'dosya_ac'

find komutu belirttiğiniz yolda dosyaları arar. Parametre olarak /var/www/ verdiğimiz için www dizininde ve tüm alt dizinlerinde arama yapar.
-type opsiyonu aldığı parametrelerle aradığınız nesnenin tipini belirlememize yardımcı olur. Dosya için f, dizin için d, sembolik link için l gibi.
-name parametresi dosya adını ifade eder. Joker karakterler kullanabilirsiniz. “*.php” tüm php uzantılı dosyalar gibi.

find ile bulduğumuz bu dosyaların içinde kelime araması yapmak istiyorsak sonuç olarak bulunan dosya isimlerini dosya içinde arama yapabileceğimiz grep komutuna yönlendirmemiz gerekir. grep komutuna yönlendirme yapmak için pipe | işareti, grep komutuna dosya isimlerini parametre olarak göndermek içinde xargs komutu kullanılır.

grep komutuna parametre olarak -l verdiğimizde bize sadece aradığımız metnin geçtiği dosya isimlerini geri döndürür ve dosya içerisinde arama yaparken ilk bulduğu metinden sonra aramayı bırakarak daha hızlı ilerlemeyi sağlar. -l parametresi verilmediği taktirde metnin dosya içerisinde geçtiği tüm satırları geri döndürür.

Kısaca yukarıdaki komut, /var/www/ dizini ve tüm alt dizinlerinde ki php uzantılı tüm dosyalarda ‘dosya_ac’ metni geçenleri bulur.

9 Yorum “Bir Dizindeki Dosyaların İçinde Metin Arama”

  1. Kenan Duman Diyor:

    Döküman için teşekkür ediyorum, gerçekten işime yaradı.

  2. Adil Kara Diyor:

    kardeş selam
    bu komut sayesinde sitemi temizledim
    sitem bir hack saldırısına uğradı ve bir sürü dosya değiştirilmiş, gif dosyalarının bile içine yazı yazılmış, bu komut sayesinde o yazıyı buldum ve bütün dosyaları orjinalleri ile değiştirdim.
    Çok sağolasın çok işime yaradı

  3. admin Diyor:

    İşinize yaramış olmasına çok sevindik. Yaşadığınız diğer sorunlarınızı da iletirseniz burada onlara da çözüm bulmaya çalışırız.

  4. gürsel Diyor:

    Teşekkürler.Çok işime yaradı.

  5. firmalar Diyor:

    peki windowsta?

  6. admin Diyor:

    windows’un kendi dosya bulma aracında belge içinde arama özelliği var. Onu kullanabilirsiniz.Eğer alt klasörlerde arama yapılmasını istemiyorsanız ileri düzey seçeneklerden alt klasörlerden arama seçeneğini kapatmanız yeterli.

  7. boranjudge Diyor:

    Peki php ile dizin içindeki dosyaların içinde metin aramasını nasıl yapabiliriz ?

  8. admin Diyor:

    aynı işlemi php’de yapmak için farklı yollar mevcut. ilk aklıma gelenler:
    - burada yazılı olan komut dizisini php’nin system komutu ile çalıştırıp sonucu alabilirsiniz. ama bunun için web kullanıcısının (www-data) bu komutları calıstırabilme yetkisine sahip olması gerekir.
    - php dizin sınıfları ile dizindeki dosyaları tek tek okuyup bu veri içerisinde arama yapabilirsiniz. (strstr, ereg, eregi, preg_match v.b komutlar ile)

  9. boranjudge Diyor:

    teşekkürler oldu.

Yorum Yaz

Lampforweb 2007 Tüm hakları saklıdır. Tema N.Design Studio
İçerik RSS Yorum RSS Giriş