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.



Mart 23rd, 2008 02:15
Döküman için teşekkür ediyorum, gerçekten işime yaradı.
Kasım 4th, 2008 10:20
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ı
Kasım 5th, 2008 14:55
İş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.
Ocak 2nd, 2009 01:32
Teşekkürler.Çok işime yaradı.
Mart 3rd, 2009 16:26
peki windowsta?
Nisan 7th, 2009 08:58
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.
Kasım 18th, 2009 21:43
Peki php ile dizin içindeki dosyaların içinde metin aramasını nasıl yapabiliriz ?
Kasım 19th, 2009 00:04
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)
Kasım 19th, 2009 05:21
teşekkürler oldu.