Unix/Linux : Find Komutunun Örneklerle Kullanımı.

Merhabalar

Bu yazıda Linux türevi işletim sistemlerinde kullanılan find komutunun örnekler halinde kullanımına değineceğim. Find komutu dosya aramak, dosya boyutlarını listelemek gibi ileri düzey farklı işlevler içinde kullanılmaktadır.

Find komutunun detaylarına bakalım.

1. Sistem üzerinde log.txt ismi olan dosyaları listelemek isterseniz aşağıdaki komutu kullanabilirsiniz.

root# find / -name "log.txt"

2. Sistem üzerinde log.txt ismi geçen dosyaları listelemek isterseniz aşağıdaki komutu kullanabilirsiniz. Örneğin, bir path dosyanın içerisinde log.txt ismi geçiyor ise listeyecektir. Basit bir örnek verelim, ( blabla.log.txt.blabla gibi.)

root# find / -name "*log.txt*"

3. Sistem üzerinde log adında bir dizin aramak isterseniz aşağıdaki komut kullanılabilir.

root# find / -type d -name "log"

4. Bir dosya ararken büyük/küçük harf duyarsızlığını aktif etmek isterseniz aşağıdaki komuta        -iname parametresi eklenebilir.

root# find / -iname "log.txt"

5. Belirli bir dizin içerisinde bir dosya aramak isterseniz aşağıdaki gibi bir komut kullanabilirsiniz. Örnek, /home dizini içerisinde log.txt dosyasını bulmak için,

root# find /home -name "log.txt"

Find “Size” Seçenekleri

k : kilobytes   (1024 bytes)

M : megabytes  (1024 kilobytes)

G : gigabytes   (1024 megabytes)

T : terabytes   (1024 gigabytes)

P : petabytes  (1024 terabytes)

Find “Type” Seçenekleri

b : özel blok dosyası

c : özel karakter dosyası

d : dizin

f  : basit dosya

l  : sembolik link

P : FIFO

s  : soket

Find Komutunu “Tar” Komutu ile Kullanmak

6. Aşağıdaki komut /home dizini altındaki .mp3 uzantılı dosyaları myfile.tar adında bir dosya oluşturacak ve içerisine sıkıştıracaktır.

root# find /home -type f -name "*.mp3" | xargs tar cvf myfile.tar

7. Aşağıdaki komut ise /home dizini altındaki .mp4 uzantılı dosyaları oluşturulan myfile.tar adında dosyaya ekleyecektir.

root# find /home -type f -name "*.mp4" | xargs tar rvf myfile.tar

8. Aşağıdaki komut /home dizini içerisinde, boyutu 500MB olan dosyaları listeleyecektir.

root# find /home -type f -size 500M

9. Aşağıdaki komut /home dizini içerisinde, boyutu 500MB üstü olan dosyaları listeleyecektir.

root# find /home -type f -size +500M

10. Aşağıdaki komut /home dizini içerisinde, boyutu 500MB altı olan dosyaları listeleyecektir.

root# find /home -type f -size -500M

11. Aşağıdaki komut ise /home dizini içerisinde, boyutu 1GB olan dosyaları listeleyecektir. Üstteki + ve seçeneklerini bu komutta ‘da kullanabilirsiniz.

root# find /home -type f -size 1G

12. Örneğin, /home dizini içerisinde boyutu 500MB ile 1GB arasındaki dosyaları listelemek isterseniz aşağıdaki gibi bir komut kullanabilirsiniz.

root# find /home -type f -size +500M -size -1G

13. Aşağıdaki komut /home dizini içerisinde 500MB olan dosyaları bulup size herhangi bir soru sormadan silecektir. Kullanırken dikkat ediniz. !

root# find /home -type f -size 500M -exec rm -rf {} ;

14. Aşağıdaki komut /home dizini altındaki 500MB olan .mp3 uzantılı dosyaları size herhangi bir soru soramdan silecektir. Yada 500MB ‘dan daha fazla olan .mp3 dosyalarını silmek isterseniz +500MB parametresini ekleyebilirsiniz.

root# find /home -type f -name *.mp3 -size 500M -exec rm {} \;

15. Aşağıdaki komut /home dizini içerisinde 500 karakterden fazla olan dosyaları listeleyecektir. Aynı şekilde + ve seçeneklerini bu komutta ‘da kullanabilirsiniz.

root# find /home -type f -size +500c

16. Sistem üzerinde birden fazla dosyayı aynı anda aramak isterseniz aşağıdaki komutu kullanabilirsiniz. Örneğin, log1.txt ve log2.txt adlı iki dosyayı aynı anda aramak için,

root# find / -type f \( -name "log1.txt" -o -name "log2.txt" \) -print

home/log1.txt
home/log2.txt

17. Aşağıdaki komut /home dizini içerisinde son 2 gün içerisinde oluşturulmuş ve dosya izinleri değiştirilmiş olan dosyaları listeleyecektir. Dizinler için ise ikinci komut kullanılabilir.

root# find /home -type f -ctime 2

root# find /home -type d -ctime 2

18. Aşağıdaki komut /home dizini içerisinde son 1 saat içerisinde erişilmiş dosyaları listeyecektir. Komut dakika cinsinden çalışmaktadır.

root# find /home -type f -amin -60

19. Sistem üzerinde 777 iznine sahip olan dosyaları listelemek isterseniz aşağıdaki komutu kullanabilirsiniz. Dizinler için ise ikinci komut kullanılabilir.

root# find / -type f -perm 777

root# find / -type d -perm 777

20. Sistem üzerinde sadece u+rwx iznine sahip olan dosyaları listelemek isterseniz aşağıdaki komut kullanılabilir.

root# find / -type f -perm u+rwx

root# find / -type f -perm u+rwx | xargs ls -alh

21. Sistem üzerinde SUID bit izni olan dosyaları listelemek isterseniz aşağıdaki komut kullanılabilir.

root# find / -type f -perm /u=s

root# find / -type f -perm +4000

22. Yukarıdaki komutun aynısı sadece -user ali parametresini ekleyerek ali kullanıcısına ait SUID bit izni olan tüm dosyaları görebiliriz.

root# find / -user ali -type f -perm /u=s

root# find / -user ali -type f -perm +4000

23. Aşağıdaki komutu kullanarak aynı anda SGID izinlerini ve SUID izinlerine sahip olan dosyaları görüntüleyebilirsiniz.

root# find / -type f -perm -4000 -o -perm -2000 -print

24. Sistem üzerinde SGID bit izni olan dosyaları ‘da listelemek isterseniz aşağıdaki komutu kullanabilirsiniz.

root# find / -type f -perm /g+s

root# find / -type f -perm /2000

25. Sistem üzerinde Sticky bit iznine sahip olan dosyaları görmek isterseniz birinci komut kullanılabilir. Aynı şekilde bu izne sahip dizinleri görmek isterseniz ise ikinci komut kullanılabilir.

root# find / -type f -perm 1551

root# find / -type d -perm 1551

26. Belirli bir dizin içerisinde 777 izni hariç diğer tüm dosyaları listelemek isterseniz aşağıdaki komut kullanılabilir. 

root# find /home ! -perm 777 -type f

root# find /home ! -perm 777 -type f | xargs ls -alh

27. Örneğin, /home dizini içerisinde 777 iznine sahip olan dosyaların izinlerini 755 izni ile değiştirmek isterseniz aşağıdaki komutu kullanabilirsiniz. Kullanırken çok dikkat ediniz bazı dosyaların erişim izinleri bozulduğu zaman çalışmayabiliyor.

root# find /home -type f -perm 777 -print -exec chmod 755 {} \;

28. Yukarıdaki komutun aynısı sadece dizinler için bunu yapmak isterseniz aşağıdaki komutu kullanabilirsiniz.

root# find /home -type d -perm 777 -print -exec chmod 755 {} \;

29. Aşağıdaki komutlar farklı gruplara ait sadece read-only iznine sahip dosyaları listleyecektir. Eğer izinleri ile birlikte görmek isterseniz komutun sonuna | xargs ls -lah parametresini ekleyebilirsiniz.

root# find / -type f -perm /u=r

root# find / -type f -perm /g=r

root# find / -type f -perm /o=r

30. Aşağıdaki komutlar ‘da farklı gruplara ait sadece executable-only iznine sahip dosyaları listleyecektir. 

root# find / -type f -perm /u=x

root# find / -type f -perm /g=x

root# find / -type f -perm /o=x

31. Aşağıdaki komutlar ise farklı gruplara ait sadece write-only iznine sahip dosyaları listleyecektir. 

root# find / -type f -perm /u=w

root# find / -type f -perm /g=w

root# find / -type f -perm /o=w

32. Aşağıdaki komut /home dizini içerisinde log.txt adlı dosyaları bulup size hiç bir soru sormadan silecektir. Kullanırken dikkat edin. !

root# find /home -type f -name "log.txt" -exec rm -rf {} \;

33. Aşağıdaki komut /home dizini içerisinde, içeriği boş olan dosyaları listeleyecektir. 

root# find /home -type f -empty

34. Aşağıdaki komut ise yukarıdaki komuta benzer görevi ise /home dizini altındaki boş olan dizinleri listeleyecektir.

root# find /home -type d -empty

35. Hiçbir kullanıcıya ait olmayan dosyaları görmek isterseniz aşağıdaki komutu kullanabilirsiniz.

root# find / -nouser -print

36. Hiçbir gruba ait olmayan dosyaları görmek isterseniz aşağıdaki komutu kullanabilirsiniz.

root# find / -nogroup -print

37. Bir dizin altında gizli olan dosyaları görmek isterseniz aşağıdaki gibi bir komut kullanabilirsiniz.

root# find /home -type f -name “.*”

38. Örneğin, bir ali adlı kullanıcımız olsun ve aşağıdaki gibi bir komut kullanarak ali kullanıcısına ait tüm dosyaları görebiliriz.

root# find / -type f -user ali

root# find / -type f -user ali |xargs ls -lah

39. Aynı şekilde ali kullanıcısına ait özel bir dosya arıyorsak aşağıdaki gibi bir komut kullanabilirsiniz.

root# find / -type f -user ali -name "log.txt"

40. Sistemde ali grubuna ait tüm dosyaları listelemek istersek aşağıdaki komut kullanılabilir.

root# find / -type f -group ali

41. Yukarıdaki komutun -type f parametresini silip -type d parametresini eklersek ali grubuna ait tüm dizinleri görebiliriz.

root# find / -type d -group ali

42. Sistemde ali kullanıcısına ait tüm dosyaları bulup silmek isterseniz aşağıdaki komutu kullanabilirsiniz. Kullanırken dikkat ediniz. !

root# find / -type f -user ali -exec rm -rf {} ;

43. Aşağıdaki komut /home dizini içerisinde son 5 gün içerisinde değiştirilmiş dosyaları listeleyecektir.

root# find / -type f -mtime 5

44. Yukarıdaki komuta benzer bir komut ise aşağıdaki gibi. Aşağıdaki komut ise /home dizini içerisinde son 10-20 gün arası değiştirilmiş dosyaları listeleyecektir. Detaylı bilgi almak isterseniz stat dosya_ismi komutu kullanılabilir.

root# find / -type f -mtime +10 -mtime -20

45. Bir dizin içerisinde son 5 gün içerisinde erişilmiş olan tüm dosyaları görmek istersek aşağıdaki komut kullanılabilir. Hemen erişilmiş dosyaları görmek için -atime 0 parametresi kullanılabilir.

root# find /home -type f -atime 5

root# find /home -type f -atime 0

46. Aşağıdaki komut /home dizini içerisinde son 1 saat içerisinde değiştirilmiş tüm dosyaları listeleyecektir. Bu parametre dakika cinsinden çalışmaktadır.

root# find /home -type f -cmin -60

Daha fazla bilgi için man find komutu kullanabilirsiniz. 

Tagged with: , , , , , , ,
3 comments on “Unix/Linux : Find Komutunun Örneklerle Kullanımı.
  1. Ali Biricik says:

    Detaylı ve güzel anlatım için elinize ve emeğinize teşekkür ederiz.

  2. Hüseyin Altunkaynak says:

    Hacı sen ne yaptın bee 😀
    Ellerine sağlık çok güzel olmuş 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Archives