
Linux grep ve find Komutları Nedir? Sunucuda Dosya ve Metin Arama Nasıl Yapılır?
Sunucuda dosya ve metin aramayı find ve grep ile öğrenin. Komut örnekleriyle log incelemeyi ve hatalı ayarları hızla bulmanın yolunu hemen keşfedin.

Cenk ŞEKERCİ
Operasyon Yöneticisi
Bir sunucuda yüzlerce dizin ve binlerce dosya arasında tek bir yapılandırma satırını aramak, grafik arayüz olmadan zor görünebilir. Oysa find ve grep komutları bu işi saniyeler içinde halleder. İkisi birbirini tamamlar: find dosyayı bulur, grep dosyanın içindeki metni bulur.
Linux grep ve find Komutları Nedir?
find, dosya ve dizinleri ada, boyuta, türe, sahibe ve değiştirilme tarihine göre arayan komuttur. grep ise bir dosyanın veya komut çıktısının içinde belirli bir metni ya da düzenli ifadeyi (regex) arar. Biri "dosya nerede?", diğeri "bu ifade hangi dosyanın hangi satırında?" sorusuna cevap verir.
Bu iki araç, GNU/Linux dağıtımlarının neredeyse tamamında varsayılan olarak kurulu gelir. Ayrı bir paket yüklemeniz gerekmez; SSH ile sunucuya bağlandığınız anda kullanabilirsiniz. Log incelemek, hatalı bir ayarı bulmak veya şişen dizini tespit etmek gibi günlük yönetim işlerinin çoğu bu ikiliyle çözülür.
Linux'ta Dosya Nasıl Aranır?
Linux'ta dosya aramanın en yaygın yolu find komutudur. Temel söz dizimi find [dizin] [koşul] şeklindedir. Aramayı hangi dizinde başlatacağınızı ve neye göre filtreleyeceğinizi belirtirsiniz.

Dosya adına göre arama için şu komutu kullanabilirsiniz:
find /var/www -name "wp-config.php"
Büyük/küçük harf ayrımını kaldırmak için -iname kullanılır. Uzantıya göre aramak da mümkündür:
find /home -iname "*.log"
locate ile hızlı arama
Dosya adını biliyorsanız locate komutu çok daha hızlı sonuç verir, çünkü canlı tarama yapmak yerine önceden oluşturulmuş bir veritabanına bakar. Bu veritabanı düzenli güncellenmediği için yeni oluşturulan dosyaları göstermeyebilir. Güncel sonuç gerekiyorsa find tercih edilmelidir.
İpucu: Kök dizinde (
/) tarama yapmak yerine aramayı mümkün olduğunca dar bir dizinle sınırlayın. Hem süre kısalır hem de gereksiz disk okuma yükünden kaçınırsınız.
Linux find Komutu Ne İşe Yarar?
find komutu yalnızca isim aramaz; dosyaları özelliklerine göre süzer ve bulunanlar üzerinde işlem yapabilir. Boyut, tür, sahiplik, izin ve zaman damgası gibi ölçütleri birleştirerek çok hassas aramalar kurabilirsiniz.
| Amaç | Örnek komut |
|---|---|
| 100 MB'tan büyük dosyaları bul | `find /var -type f -size +100M` |
| Son 7 günde değişenleri listele | `find /var/www -type f -mtime -7` |
| Yalnızca dizinleri göster | `find /home -type d -name "backup*"` |
| Belirli kullanıcıya ait dosyalar | `find /home -user ahmet` |
| 777 izinli dosyaları bul | `find /var/www -type f -perm 0777` |
find ile bulunan dosyalara işlem uygulamak
-exec parametresi, bulunan her dosya için başka bir komut çalıştırır. Örneğin 30 günden eski log dosyalarını silmek için:
find /var/log/uygulama -name "*.log" -mtime +30 -exec rm {} \;
Silme gibi geri dönüşü olmayan işlemlerden önce komutu -exec rm {} \; kısmı olmadan çalıştırıp çıktıya göz atmak güvenli bir alışkanlıktır.
Uyarı: Üretim sunucusunda
-deleteveya-exec rmkullanmadan önce sonuç listesini mutlaka kontrol edin. Yanlış bir dizin ya da hatalı bir koşul, önemli dosyaların silinmesine yol açabilir.
Dosya Üzerinde Arama Nasıl Yapılır?
Dosyanın içindeki metni aramak için grep kullanılır. Söz dizimi grep [seçenekler] "aranan ifade" dosya biçimindedir ve ifadenin geçtiği satırları ekrana basar.
grep "error" /var/log/syslog
Sık kullanılan seçenekler şunlardır:
| Seçenek | Görevi |
|---|---|
| `-i` | Büyük/küçük harf farkını yok sayar |
| `-n` | Satır numaralarını gösterir |
| `-r` | Dizinleri alt klasörleriyle birlikte tarar |
| `-v` | İfadeyi içermeyen satırları gösterir |
| `-c` | Eşleşen satır sayısını verir |
| `-l` | Yalnızca eşleşen dosya adlarını listeler |
| `-E` | Genişletilmiş düzenli ifade kullanır |
Bir dizindeki tüm dosyalarda metin aramak
Örneğin bir sitenin kodunda eski bir alan adının nerede geçtiğini bulmak için:
grep -rn "eskialanadi.com" /var/www/site
Bu komut, eşleşen dosyayı, satır numarasını ve satırın kendisini birlikte gösterir. Taşıma veya alan adı değişikliği sonrası kalan bağlantıları temizlerken oldukça işe yarar.
Boru (pipe) ile grep kullanmak
grep yalnızca dosyalarla sınırlı değildir; başka bir komutun çıktısını da süzebilir:
ps aux | grep nginx
Bu örnek, çalışan süreçler arasında yalnızca nginx ile ilgili olanları listeler. Aynı mantıkla dpkg -l | grep php gibi kullanımlar yüklü paketleri hızlıca daraltır.
find ve grep Birlikte Nasıl Kullanılır?
İki komutu birleştirmek, dosya türünü ve içeriği aynı anda filtrelemenizi sağlar. Böylece yalnızca ilgilendiğiniz dosya tiplerinde metin araması yapabilirsiniz.
find /var/www -type f -name "*.php" -exec grep -l "base64_decode" {} \;
Bu komut, PHP dosyaları içinde base64_decode geçenleri listeler. Şüpheli kod taramasında başlangıç noktası olarak kullanılır; ancak eşleşme tek başına zararlı yazılım anlamına gelmez, meşru eklentiler de bu fonksiyonu kullanabilir.
Büyük dizinlerde daha verimli bir alternatif de xargs kullanmaktır:
find /var/www -type f -name "*.conf" | xargs grep -n "ServerName"
Dosya adlarında boşluk olma ihtimali varsa find ... -print0 | xargs -0 grep ... biçimini tercih edin.
Linux'ta Temel Komutlar Nelerdir?
grep ve find öğrenmeye başlamadan önce sunucuda gezinmek ve dosyaları yönetmek için birkaç temel komutu bilmek işi kolaylaştırır.
| Komut | Ne yapar? |
|---|---|
| `ls` | Dizin içeriğini listeler |
| `cd` | Dizin değiştirir |
| `pwd` | Bulunulan dizini gösterir |
| `cp` / `mv` | Dosya kopyalar / taşır veya yeniden adlandırır |
| `rm` | Dosya siler |
| `mkdir` | Yeni dizin oluşturur |
| `cat` / `less` | Dosya içeriğini görüntüler |
| `tail -f` | Dosyanın sonunu canlı izler |
| `chmod` / `chown` | İzin ve sahiplik düzenler |
| `df` / `du` | Disk kullanımını gösterir |
tail -f /var/log/nginx/error.log | grep -i "timeout" gibi bir kombinasyon, canlı log akışında yalnızca ilgili hataları görmenizi sağlar. Temel komutları grep ile birleştirmek, günlük sorun gidermenin en pratik yoludur.
Sunucu Yönetiminde Pratik Kullanım Senaryoları
Komutları gerçek durumlarla ilişkilendirmek kalıcı öğrenmeyi kolaylaştırır.
| Senaryo | Önerilen yaklaşım |
|---|---|
| Disk doldu, hangi dosyalar büyük? | `find / -type f -size +500M 2>/dev/null` |
| Sitede hata var, log'da neye bakmalı? | `grep -i "fatal" error.log` |
| Eski yedekleri temizlemek | `find /backup -mtime +60 -name "*.tar.gz"` |
| Yapılandırmada bir ayarı bulmak | `grep -rn "memory_limit" /etc` |
| Yetkisiz izinli dosya denetimi | `find /var/www -perm 0777` |
2>/dev/null eklemek, "Permission denied" hatalarını gizleyerek çıktıyı okunur hale getirir. Yönetici yetkisi gerektiren aramalarda komutun başına sudo eklemeniz gerekebilir.
Bilgi: Paylaşımlı hosting hesaplarında SSH erişimi her pakette bulunmayabilir. Kendi sunucunuzda (VPS veya dedicated) root yetkisiyle çalıştığınızda bu komutların tüm gücünden yararlanırsınız.
Sık Sorulan Sorular
grep ve find arasındaki fark nedir?
find dosya ve dizinleri adı, boyutu, türü gibi özelliklerine göre bulur. grep ise dosyaların içindeki metni arar. Pratikte önce find ile doğru dosya grubunu seçer, sonra grep ile içeriği incelersiniz.
grep ile büyük/küçük harf duyarsız arama nasıl yapılır?
-i seçeneğini kullanın. Örneğin grep -i "hata" dosya.log komutu "Hata", "HATA" ve "hata" ifadelerinin hepsini bulur. Log dosyalarında farklı yazımlarla karşılaşıldığı için bu seçenek sık tercih edilir.
find komutu çok yavaş çalışıyorsa ne yapılmalı?
Aramayı kök dizin yerine ilgili klasörle sınırlayın ve -type f gibi koşullarla kapsamı daraltın. Dosya adı yeterliyse locate çok daha hızlı sonuç verir. Ağ üzerinden bağlanan disklerde aramalar doğal olarak daha uzun sürer.
Bulunan dosyaları güvenli biçimde nasıl silerim?
Önce komutu silme parametresi olmadan çalıştırıp listeyi kontrol edin. Sonuçtan emin olduktan sonra -delete veya -exec rm {} \; ekleyin. Önemli veriler için işlemden önce yedek almak en sağlıklı yöntemdir.
grep ile birden fazla kelime nasıl aranır?
-E seçeneğiyle dikey çizgi kullanabilirsiniz: grep -E "hata|uyarı|timeout" dosya.log. Bu komut üç ifadeden herhangi birini içeren satırları getirir.
Sunucu Yönetiminde Doğru Altyapı
find ve grep, kendi sunucunuzda tam kontrolle çalıştığınızda en verimli sonucu verir. Netlen İnternet Hizmetleri'nin sunucu, web hosting ve alan adı hizmetlerini inceleyerek projenize uygun altyapıyı değerlendirebilir, teknik ihtiyaçlarınız için netlen.com.tr üzerinden destek ekibiyle iletişime geçebilirsiniz.
İlgili İçerikler
- SSH ile Sunucuya Bağlanma: Adım Adım Rehber
- Linux Dosya İzinleri ve chmod Komutu Nasıl Kullanılır?
- VPS Nedir? Hangi Projeler İçin Uygundur?
- Sunucu Log Dosyaları Nasıl Okunur ve Analiz Edilir?
- Linux Sunucuda Disk Doluluğu Nasıl Kontrol Edilir?
Netlen'i Google'da Takip Edin
En güncel rehberlerimize, duyurularımıza ve teknik içeriklerimize Google üzerinden öncelikli ulaşmak için Netlen'i tercih ettiğiniz kaynaklar arasına ekleyin.
Bu yazıyı paylaşın

Yazar Hakkında
Cenk ŞEKERCİ
Operasyon Yöneticisi
Bulut teknolojileri, ağ altyapıları ve veri merkezi operasyonları üzerine çalışıyorum. Öğrendiğim yeni teknolojileri ve sahada karşılaştığım gerçek deneyimleri anlaşılır şekilde paylaşmayı seviyorum.
Yorumlar
Bu yazı hakkında okuyucu yorumları


