Linux ‘da Find Komutu Kullanımı ve Örnekleri

Linux ‘daki Find Komutu, Unix benzeri işletim sistemlerinde en önemli ve en sık kullanılan komutdur ve cli için çok yardımcı bir programdır. Find komutu, bağımsız değişkenlerle eşleşen dosyalar için belirttiğiniz koşullara göre dosya ve dizin listesini aramak ve bulmak için kullanılır.

Dosyaları izinlerine, kullanıcılara, gruplara, dosya türlerine, tarihe, boyuta ve diğer olası ölçütlere göre arama yapabileceğiniz gibi çeşitli koşul durumlarında da kullanılabilir.

  • Bölüm 1: İsimleri Olan Dosyaları Bulmak için Temel Find Komutları
  • Bölüm 2: İzinlerine Göre Dosya Arama
  • Bölüm 3: Sahiplere ve Gruplara Göre Dosya Arama
  • Bölüm 4: Tarih ve Saate Göre Dosya ve Dizin Arama
  • Bölüm 5: Boyuta Göre Dosyaları ve Dizinleri Arama
  • Bölüm 6: Birden Çok Dosya Adıyla Arama

Bölüm 1: İsimleri Olan Dosyaları Bulmak için Temel Find Komutları

1. Geçerli Dizinde Ad Kullanarak Dosyaları Bulun.

Geçerli bir çalışma dizininde adı test.txt olan tüm dosyaları bulun.

[root@srv1 ~]# find . -name test.txt

./test.txt

2. Home dizini altında dosya bulma

/home dizini altındaki test.txt adındaki dosyayı tüm dosyalar içinde aramak için:

[root@srv1 ~]# find /home -name test.txt

/home/test.txt

3. Dosya Adını ve Yoksaymayı Kullanarak Dosyaları Bulma

Adı test.txt olan ve /home dizininde büyük ve küçük harf içeren tüm dosyaları bulun.

[root@srv1 ~]# find /home -iname test.txt

./test.txt
./Test.txt

4. Ad Kullanarak Dizin Bulma

/ Dizininde adı Test olan tüm dizinleri bulmak için:

[root@srv1 ~]# find / -type d -name Test

/Test

5. Adını Kullanarak PHP Dosyalarını Bulma

Geçerli bir çalışma dizininde adı test.php olan tüm php dosyalarını bulun.

[root@srv1 ~]# find . -type f -name test.php

./test.php

6. Dizindeki tüm PHP Dosyalarını Bulma

Bir dizindeki tüm php dosyaları:

[root@srv1 ~]# find . -type f -name "*.php"

./test.php
./login.php
./index.php

Bölüm 2: – İzinlerine Göre Dosya Arama

7. 777 İzni Olan Dosya Bulma

[root@srv1 ~]# find . -type f -perm 0777 -print

8. 777 İzni Olmayan Dosya Bulma

[root@srv1 ~]# find / -type f ! -perm 777

9. 644 İzni olan SGID Dosyalarını Bulma

[root@srv1 ~]# find / -perm 2644

10. 551 İzni Olan Sticky Bit Dosyaları Bulma

[root@srv1 ~]# find / -perm 1551

11. SUID Dosyalarını Bulma

[root@srv1 ~]# find / -perm /u=s

12. SGID Dosyalarını Bulma

[root@srv1 ~]# find / -perm /g=s

13. Read Only Dosyalarını Bulma

[root@srv1 ~]# find / -perm /u=r

14. Executable Dosyalarını Bulma

[root@srv1 ~]# find / -perm /a=x

15. İzni 777 Olan Dosyaları 644 İznine Çevirme

777 izinli dosyaların tümünü bulup izinlerini 644 olarak ayarlamak için chmod komutunu aşağıdaki şekilde kullanabilirsiniz.

[root@srv1 ~]# find / -type f -perm 0777 -print -exec chmod 644 {} \;

16. İzni 777 Olan Dizinleri 755 İznine Çevirme

777 izinli dizinlerin tümünü bulup izinlerini 755 olarak ayarlamak için chmod komutunu aşağıdaki şekilde kullanabilirsiniz.

[root@srv1 ~]# find / -type d -perm 777 -print -exec chmod 755 {} \;

17. Tek Bir Dosyayı bulma ve Silme

Bulunduğunuz dizinde test.txt dosyasını bulup silmek için;

[root@srv1 ~]# find . -type f -name "test.txt" -exec rm -f {} \;

18. Birden Çok Dosyaları Bulma ve Kaldırma

.mp3 veya .txt gibi birden çok dosyayı bulmak ve kaldırmak için aşağıdaki komutu kullanın.

[root@srv1 ~]# find . -type f -name "*.txt" -exec rm -f {} \;

OR

[root@srv1 ~]# find . -type f -name "*.mp3" -exec rm -f {} \;

19. Boş Dosyaları Bulma

[root@srv1 ~]# find /tmp -type f -empty

20. Boş Dizinleri Bulma

[root@srv1 ~]# find /tmp -type d -empty

21. Tüm Gizli Dosyaları Bulma

[root@srv1 ~]# find /tmp -type f -name ".*"

Bölüm 3: – Sahiplere ve Gruplara Göre Dosya Arama

22. Kullanıcıya Göre Tek Bir Dosya Bulma

[root@srv1 ~]# find / -user root -name tecmint.txt

23. Kullanıcıya Göre Çoklu Dosyaları Bulma

/home dizini altındaki ovural kullanıcısına ait tüm dosyaları bulmak için:

[root@srv1 ~]# find /home -user ovural

24. Gruba Göre Tüm Dosyaları Bulma

/home dizini altındaki devop grubuna ait tüm dosyaları bulmak için.

[root@srv1 ~]# find /home -group devop

25. Bir Kullanıcının Belirli Dosyalarını Bulma

/home dizini altındaki ovural kullanıcısının tüm .txt dosyalarını bulmak için:

[root@srv1 ~]# find /home -user ovural -iname "*.txt"

Bölüm 4: – Tarih ve Saate Göre Dosya ve Dizin Arama

26. Son 50 Günde Değiştirilmiş Dosyaları Bulma

[root@srv1 ~]# find / -mtime 50

27. 50 Gün Önce Erişilen Dosyaları Bulma

[root@srv1 ~]# find / -atime 50

28. Son 50 ile 100 Gün arasında Değiştirilmiş Dosyaları Bulma

[root@srv1 ~]# find / -mtime +50 –mtime -100

29. Son 1 Saatte Değişen Dosyaları Bulma

[root@srv1 ~]# find / -cmin -60

30. Son 1 Saatte Modifiye Edilen Dosyaları Bulma

[root@srv1 ~]# find / -mmin -60

31. Son 1 Saatte Erişilen Dosyaları Bulma

[root@srv1 ~]# find / -amin -60

Bölüm 5: – Boyuta Göre Dosyaları ve Dizinleri Arama

32. Boyutu 50 MB olan Dosyaları Bulma

[root@srv1 ~]# find / -size 50M

33. Boyutu 50-100 MB Arasında Olan Dosyaları Bulma

[root@srv1 ~]# find / -size +50M -size -100M

34. Boyutu 100 MB olan Dosyaları Bulma ve Silme

[root@srv1 ~]# find / -type f -size +100M -exec rm -f {} \;

35. Spesifik Özelliklerde Bir Dosyayı Bulup Silme

10 MB’tan daha büyük tüm .mp3 dosyalarını bulmak ve silmek için;

[root@srv1 ~]# find / -type f -name *.mp3 -size +10M -exec rm {} \;

Bölüm 6: Birden Çok Dosya Adıyla Arama

[root@srv1 ~]# find directory options [ expression ]

Genel kullanım için aşağıdaki örnek konunun anlaşılmasını sağlayacaktır.

Bulunduğunuz dizindeki dosyanın uzantısı .sh ve .txt ile biten dosyalarını tümünü bulmak için;

[root@srv1 ~]# find . -type f \( -name "*.sh" -o -name "*.txt" \)
[root@srv1 ~]# find /home/aaronkilik/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \) 

Yazının sonuna geldik. Umarım faydalı olur, kolay gelsin.

Kaynak: https://www.tecmint.com/35-practical-examples-of-linux-find-command/

Yeteneklerini kullanarak başarılı olan insanlarla bir sorunum yok, sadece başarının en üst hedef olmadığını düşünüyorum. Özgürlük, bilginin paylaşılması - genişlemesi başarının, kişiselliğin ötesinde şeyler. Kişisel başarı yanlış değil ama etkisi sınırlanmış, eğer gerektiği kadarını elde ettiyseniz hala bunun için açlık duymak ayıp, tabii doğruluk, güzellik ve adalet için durum tam tersi. / Richard Stallman