Feb 21 2006

find ve fonksiyonlarinin getirdikleri

Category: Fedora, Linux/Unix, debian, shelladmin @ 11:16 pm

Gecenlerde bulundugum klasördeki düm dosyalarin icinde beli bir kelimeyi aramak zorunda kalinca vakit ayirip ögrenmedigim find grep unix araclari’nin kombinasyon fonksiyonlarini ögrenmeye karar verdim. Bunu yaparkende su dokumani cevireyim dedim. dokuman link: http://www.athabascau.ca/html/depts/compserv/webunit/HOWTO/find.htm

find’in sentaksi kabaca söyledir
find [nerde aranacak] [aranan dosyanin özelikleri]

mesela bulundugumuz klasörde (yada dizin neyse iste) yani . dizininde t ile basliyan dosyalari bulalim. -name secenegi ile aranacak dosyan’nin adini belirliyelim
find . -name “rc.conf” -print
./tr-verben.lexc~
./tr-verb.xfst
./tr-verben.lexc

find komutu ile beli basli dosyalari bulup ayni zamanda findin - exec secenegi ile bu dosyalarla ilgili islemler yapabiliriz mesela. Asagidaki komut kendi ve altdizininde tr ile basliyan dosyalari bulur ve her biri icin chmod o+r komutunu calistirir. Bu ibare ‘{}’ bulunan her dosya icin chmod komut satirini calistirir. Bu ibare \; ise -exec komutunu bitis noktasini belirler. exec komutunun hangi dosyalari icin calistirildigini görmek istiyorsak en sona -print secenegini ekleriz.
find . -name “tr*” -exec chmod o+r ‘{}’ \; -print

Encok sevdigim ve sentaksini aklimda tutamadigim icin ara sira googlede aradigim find grep kombinasyonu ta ta tatammmmm :P
grep findin buldugu dosyalarin icin fatih genc kelimesini arar. ve buldugu satirlari ekrana yazar.
find . -exec grep “fatih genc” ‘{}’ \; -print

Ancak bu oldukca kullanisli bir kullanim sekli olmaya bilir. Mesela icinde fatih genc gecen dosyalarin tam adresini ekrana yazmasi bence daha mantikli. grepe - q komutu verip onu eger bisey bulursa find programina 0 yolamasini istiyoruz find bulunan dosyalari -print ile ekrana yansitiyor.

find . -exec grep -q “fatih genc” ‘{}’ \; -print

Verdigim linkin tamamini cevirmedim arzu edenler inglizcesini okusunlar. Vesselam…

One Response to “find ve fonksiyonlarinin getirdikleri”

  1. Onur YALAZI says:

    Buradaki şeylerin bir çoğuna ihtiyacınız yok. grep kendi başına dizinleri gezip istadiğiniz dosyada arama yapabilir.

    örn:
    grep -i “merhaba” /usr/share

    share dizini içideki, içinde büyük küçük harf ayrımı yapmadan merhaba geçen dosyaları ve hangi satırlarda geçtiğini bulur.
    Eğer /usr/share altındaki tüm dizinlere de gitmesini isterseniz

    grep -r “merhaba” /usr/share diyebilirsiniz. Tabii 2linin erekli olduğu durumlarda olabilir.

    Örn:
    find /usre/share -name hede* -exec grep -q merhaba ‘{}’; -print

    Adı hede ile başlayan ve usr/share dizini ve altında bulunan dosyalarda merhaba yı arar.
    Benim asıl grep de bayıldığım parametre ise -v;

    grep -v “merhaba” /usr/share

    içinde merhaba geçmeyen dosyaları bulur

Leave a Reply