1. Home
  2. Docs
  3. Linux
  4. Terminal
  5. find: Dosya ve Dizin Arama

find: Dosya ve Dizin Arama

Print

Linux işletim sistemlerinde belirli kriterlere (isim, uzantı, dosya boyutu, değiştirilme tarihi vb.) göre arama yapmak istediğimizde en güçlü aracımız Linux find komutu olur. Büyük dizin ağaçlarında hedef dosyayı saniyeler içinde tespit etmeyi ve bulunan dosyalar üzerinde doğrudan işlem yapmayı sağlar.

Gelin günlük geliştirme ve sistem yönetimi süreçlerinde en sık ihtiyaç duyulan find komutu kullanım senaryolarına yakından bakalım.

İsme Göre Dosya ve Dizin Aramak

Mevcut dizinde ve tüm alt dizinlerde belirli ada sahip dosyaları bulmak için -name parametresi kullanılır:

find . -name "config.h"

Büyük/küçük harf duyarsız (case-insensitive) arama yapmak istediğinizde -iname parametresini tercih edebilirsiniz:

find . -iname "*.txt"

Sadece Dosya veya Sadece Dizin Filtreleme

Aramayı yalnızca dosyalar (f – file) veya yalnızca dizinler (d – directory) ile sınırlandırmak için -type parametresi kullanılır:

# Sadece .log uzantılı dosyaları bul
find /var/log -type f -name "*.log"

# Belirli bir ada sahip dizinleri bul
find /home -type d -name "projects"

Dosya Boyutuna Göre Arama Yapmak

Disk temizliği yaparken veya büyük log dosyalarını tespit ederken -size parametresi oldukça işlevseldir:

# 100 Megabayt'tan büyük dosyaları listele
find . -type f -size +100M

# 10 Megabayt'tan küçük dosyaları bul
find . -type f -size -10M

Bulunan Dosyalar Üzerinde Komut Çalıştırmak (-exec)

find komutunun en güçlü özelliklerinden biri, bulunan dosyaları başka bir komuta girdi olarak iletebilmesidir. Örneğin, bulunan tüm .tmp geçici dosyalarını silmek için:

find . -type f -name "*.tmp" -exec rm -f {} \;

Burada {} işareti bulunan her bir dosyanın yolunu temsil eder; \; ise komutun sonlandığını belirtir.

grep ile Birlikte Kullanım

Dosyaların adını değil de dosya içerisindeki metinleri aramak istediğinizde, sitemizdeki grep ile Arama Yapmak rehberinde anlattığımız grep komutunu find ile birleştirebilirsiniz:

find . -type f -name "*.cpp" -exec grep -Hn "TODO" {} +

Daha gelişmiş parametreler ve regex kullanımı için resmi GNU Findutils Dokümantasyonu kaynağını da inceleyebilirsiniz.

Tags , , , ,

How can we help?