Linux’da gelişmiş dosya veya klasör arama (search)

Linux’da dosya veya klasör arama terminal tarafında oldukça kolay ve fonksiyoneldir. Arayacağınız kelimenin dosya mı yoksa klasör mü olduğunu, boyutunun ne kadar olabileceğinden tutun da birçok kriteri belirleyerek arama yapabilirsiniz.

En basit kullanımı aşağıdaki gibidir:

1
find -name "aranacak kelime"

Örnek vermek gerekirse:

1
find -name "*.conf"

Yukarıdaki komut mevcut bulunduğunuz klasörde, dosya uzantısı conf olan tüm dosya veya klasörleri bulup listeleyecektir. Aramayı ana klasörden itibaren yapmak için:

1
find / -name "*.conf"

Fark ettiyseniz “-name” adında bir parametre kullandık. Bunun gibi kullanışlı birçok parametresi mevcut. Bu tip parametrelere expressions denilmektedir. Şimdi birkaç örnekle daha anlaşılabilir hale getirelim:

1
find / -name "*.conf" -user nginx

Yukarıda şunu dedik; uzantısı conf olan ve nginx kullanıcısına ait tüm dosyaları ana klasörden itibaren ara ve listele.

Daha gelişmiş bir örnek:

1
find / -name "*.conf" -user nginx -cmin -10

Yine yukarıda şunu dedik; uzantısı conf olan, nginx kullanıcısına ait ve son 10 dakikada değişikliğe uğramış tüm dosyaları ana klasörden itibaren ara ve listele. Burada cmin expression’ı kullandık. -cmin’den sonra “-10” 10’dan küçük anlamında “+10” kullansaydık 10’dan büyük anlamında olacaktı. Bunu ne amaçla kullanabiliriz? Örneğin bir web klasörünüzde sizin izniniz dışında herhangi bir dosya oluşturulmuş mu? Farkında olmadan birisi sisteminize sızıp shell atmış olabilir.

Aslında bu komutu bir bash script yardımı ile cron’da belli zamanlarda otomatik çalıştırıp herhangi bir dosyaya rastladığında kendinize mail attırabilirsiniz. Böylelikle sistemde oluşacak bir dosyadan hemen haberdar olabilirsiniz. Tabiki linux güvenliğinin sonu yok 🙂

Sadece klasör veya sadece dosya arama:

1
find / -type f -name "var"

Yukarıdaki komut diziliminde -type parametresini kullandık. -type adından da anlaşılacağı üzere tür demektir. Ondan sonra gelen “f” files anlamına gelmektedir. Yani sadece dosya ara, klasörleri listeleme. Eğer “f” yerine “d” yazmış olsaydık sadece klasörleri arayıp listeleyecekti. “d” de sanırım folder’ın d’sinden geliyor.

Bir dizindeki tüm klasörlerin izinlerini değiştirmek:

1
find /var/www/domainadi.com/ -type d -exec chmod 755 {} +

Burada /var/www/domainadi.com klasörü içerisindeki tüm klasörlerin izin haklarını 755 yapmış oluyoruz. Linux’da çok sık kullandığım bir komuttur. -exec’den sonra farkındaysanız bir komut daha çalıştırdık chmod komutu.

Bu da bir dizindeki tüm dosyaların izinlerini değiştirir:

1
find /var/www/domainadi.com/ -type f -exec chmod 644 {} +

Arama’da boyut belirtme:

1
find / -type f -size +100M -exec ls -lh {} \; | awk '{ print $5 ": " $9 }' |sort -n

Yukarıda: Boyutu 100 Mbayt’dan yüksek olan dosyaları listele ve boyutlarını listelediğin dosyanın başına yaz, demek istiyoruz. Siz de deneyebilirsiniz.

Başarılar…

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Güvenlik Sorusu *