Örneklerle Linux’ta Find Komutu Nasıl Kullanılır

Merhabalar,

 

Find komutu, Linux sistem yöneticilerinin cephaneliğindeki en güçlü araçlardan biridir. Kullanıcı tarafından verilen bir ifadeye dayalı olarak bir dizin hiyerarşisinde dosya ve dizinleri arar ve eşleşen her dosya üzerinde kullanıcı tarafından belirlenen eylemi gerçekleştirebilir.

 

Dosyaları ve dizinleri izinlerine, türlerine, tarihlerine, sahipliklerine, boyutlarına ve daha fazlasına göre aramak için find komutunu kullanabilirsiniz. Ayrıca grep veya sed gibi diğer araçlarla da birleştirilebilir.

 

 

 

Find Komut Söz dizimi:

 

Find komutunun genel söz dizimi aşağıdaki gibidir

find [SEÇENEK [path...] [expression]

 

options  attribute (özniteliği), sembolik bağlantıların, hata ayıklama seçeneklerinin ve optimizasyon yönteminin işlenmesini kontrol eder.

path attribute (özniteliği), find’in dosyaları arayacağı başlangıç ​​dizinini veya dizinlerini tanımlar.

expression attribute (özniteliği), seçeneklerden, arama kalıplarından ve operatörlerle ayrılmış eylemlerden oluşur.

Not: Bir dizindeki dosyaları aramak için find komutunu çağıran kullanıcının o dizinde okuma izinlerine sahip olması gerekir.

 

 

Aşağıdaki örneğe bir göz atalım:

find -L /Desktop/www/wordpress "*.php"

-L (seçenekler) seçeneği, find komutuna sembolik bağları izlemesini söyler.

/Desktop/www/wordpress (dosya dizini) aranacak dizini belirtir.

expression (ifadesi) -name "*.php    ile biten dosyaları aramayı söyler.

 

 

 

Dosyaları Adına Göre Arama:

Dosyaları ada göre bulmak, muhtemelen find komutunun en yaygın kullanımıdır. Bir dosyayı adıyla bulmak için -name seçeneğini ve ardından aradığınız dosyanın adını kullanmalıyız.

Örneğin, www/wordpress/ dizininde wp-activate.php ve singalur45.php d adlı bir dosyaları aramak için aşağıdaki komutu kullanabiliriz.

find www/wordpress/ -name wp-activate.php
find www/wordpress/ -name singular45.php

 

 

Büyük/küçük harfe duyarsız bir arama yapmak için -name seçeneğini -iname ile değiştirin:

 

Aşağıdaki komut “WP-ACTIVATE.php”, “wp-activate.php ” ..vb. ile eşleşecektir.

find www/wordpress/ -iname wp-activate.php
find www/wordpress/ -iname WP-ACTIVATE.php

 

 

Dosyaları UzantıLARINA Göre Bulma:

Dosyaları uzantısına göre aramak, dosyaları ada göre aramakla aynıdır. Örneğin, /www/wordpress dizininde .js ile biten tüm dosyaları bulmak için aşağıdaki  komutu yazmanız gerekir.

find www/wordpress/ -type f -name *.js

 

 

Joker karakteri kullandığınızda shell tarafından yorumlanmaması için kalıbı alıntılamanız veya yıldız işareti * sembolünden ters eğik çizgi \ ile çıkmanız gerektiğini belirtmek önemlidir.

*.js regex’iyle eşleşmeyen tüm dosyaları bulmak için -not seçeneğini kullanabilirsiniz. Örneğin, *.js ile bitmeyen tüm dosyaları bulmak için aşağıdaki komutu kullanabiliriz.

find www/wordpress/ -type f -not -name *.js

 

 

 

Dosyaları Türüne Göre Bulma:

Bazen normal dosyalar, dizinler veya sembolik bağlantılar gibi belirli dosya türlerini aramanız gerekebilir. Linux’ta her şey bir dosyadır.

Dosyaları türlerine göre aramak için -type seçeneğini ve dosya türünü belirtmek için aşağıdaki tanımlayıcılardan birini kullanın:

 

f: normal bir dosya
d: dizin
l:  sembolik bağ
c: karakter cihazları (character devices)
b: Blok cihazları (block devices)
p: adlandırılmış kanal (named  pipe ) (FIFO)
s: soket (socket)

Örneğin, geçerli çalışma dizinindeki tüm dizinleri bulmak için şunları kullanırsınız:

find www/wordpress/ -type d

 

Başka bir örnek, chmod komutunu kullanarak web sitesi dosya izinlerini 644 ve klasör izinlerini 755 olarak değiştirmek için aşağıdaki komutu kullanabiliriz.Hadi yapalım.

find www/wordpress/ -type d -exec chmod 0755 {} \;

find www/wordpress/ -type f -exec chmod 0644 {} \;

 

 

 

Dosyaları Boyutuna Göre Bulma:

Dosya boyutuna göre dosyaları bulmak için, boyut ölçütleriyle birlikte -size parametresini iletin. Dosya boyutunu belirtmek için aşağıdaki son ekleri kullanabilirsiniz:

b: 512 bayt bloklar (varsayılan)
c: bayt
w: iki baytlık kelimeler
k: Kilobayt
M: Megabayt
G: Gigabayt

Aşağıdaki komutla, /www/wordpress dizini içindeki  1024 baytlık tüm dosyaları bulabiliriz.

find www/wordpress/ -type f -size 1024c

 

 

 

Find komutunu ayrıca belirtilen boyuttan daha büyük veya daha küçük dosyaları aramak içinde kullanabiliriz.

Aşağıdaki örnekte, mevcut çalışma dizini içinde 50 bayt’dan küçük tüm dosyaları arıyoruz. Boyut değerinden önceki eksi – sembolüne dikkat edin:

find www/wordpress/ -type f -size -50c

 

 

1MB’dan büyük dosyaları aramak istiyorsanız, artı + sembolünü kullanmalıyız.

find www/wordpress/ -type f -size +1M

 

 

Belirli boyut aralığındaki dosyaları bile arayabilirsiniz. Aşağıdaki komut 500KB ile 2MB arasındaki tüm dosyaları bulacaktır.

find www/wordpress/ -type f -size +500k -size -2M

 

 

Dosyaları Değişiklik Tarihine Göre Bulma:

Find komutu ayrıca son değişiklik, erişim veya değişiklik zamanına göre dosyaları arayabilir.

Boyuta göre arama yaparken olduğu gibi, “büyüktür” veya “küçüktür” için artı ve eksi simgelerini kullanın.

Diyelim ki birkaç gün önce belirli bir dizindeki bir dosyayı değiştirdiniz ama hangisi olduğunu unuttunuz. .txt ile biten ve son beş gün içinde değiştirilmiş /Desktop/KOMUTLAR/ içindeki tüm dosyaları kolayca filtreleyebiliriz.Hadi deneyelim.aşağıdaki komut 6 gün önce değişiklik yapılan dosyaları bulacaktır.

sudo find KOMUTLAR/ -name "*.txt" -mtime 6

 

 

 

-daystart seçeneğini kullanarak değişiklik tarihine göre dosyaları filtrelemenin başka bir örneği. Aşağıdaki komut, /KOMUTLAR/MKDIR dizininde 10 gün veya  daha önce değiştirilen tüm dosyaları listeleyecektir.

find KOMUTLAR/MKDIR /  -mtime + 10 -daystart

 

 

Dosyaları İzinlerine Göre Bulma:

-perm seçeneği, dosya izinlerine göre dosyaları aramanıza izin verir.

Örneğin, /Destop/www/wordpress/ dizini içinde tam olarak 665 izinli tüm dosyaları bulmak için şunları kullanırsınız:

find www/wordpress/ -perm 664

 

 

Sayısal modun önüne eksi – veya eğik çizgi / koyabilirsiniz.

Eğik çizgi / ön ek olarak kullanıldığında, en az bir kategori (kullanıcı, grup veya diğerleri) bir dosyanın eşleşmesi için en azından ilgili bitlere sahip olmalıdır.

Aşağıdaki örnek komutu göz önünde bulundurun.

find . -perm /444

Yukarıdaki komut, kullanıcı, grup veya diğerleri için ayarlanmış okuma izinlerine sahip tüm dosyaları eşleştirecektir.

 

Ön ek olarak eksi – kullanılıyorsa, dosyanın eşleşmesi için en azından belirtilen bitlerin ayarlanması gerekir. Aşağıdaki komut, sahibi ve grubu için okuma ve yazma izni olan ve diğer kullanıcılar tarafından okunabilen dosyaları arayacaktır.

find . -perm -664

 

 

 

Dosyaları Sahibine Göre Bulma:

Belirli bir kullanıcıya veya gruba ait dosyaları bulmak için -user ve -group seçeneklerini kullanın.

Örneğin, kemal kullanıcısının sahip olduğu tüm dosya ve dizinleri aramak için aşağıdaki komutu çalıştırabiliriz.

find -user kemal

 

 

İşte gerçek dünyadan bir örnek. Diyelim ki kemal kullanıcısının sahip olduğu tüm dosyaları bulmak ve eşleşen dosyaların sahipliğini Kemal’den firatcanoglu’na değiştirmek istiyoruz.

sudo find -user kemal -type f -exec chown firatcanoglu {} \;

 

 

Dosyaları Bulma ve Silme:

Tüm eşleşen dosyaları silmek için, eşleşme ifadesinin sonuna -delete seçeneğini ekleyiniz.

Bu seçeneği yalnızca sonucun silmek istediğiniz dosyalarla eşleştiğinden emin olduğunuzda kullandığınızdan emin olun. -delete seçeneğini kullanmadan önce eşleşen dosyaları yazdırmak her zaman iyi bir fikirdir.

 

Örneğin, /KOMUTLAR/FIND/ dizininden *.txt ile biten tüm dosyaları silmek için şunları kullanırsınız:

find -name '*.txt' -delete

 

-delete seçeneğini çok dikkatli kullanın.Find komutu bir ifade olarak değerlendirilir ve önce -delete seçeneğini eklerseniz komut belirttiğiniz başlangıç ​​noktalarının altındaki her şeyi siler.

Klasörler söz konusu olduğunda, find yalnızca rmdir komutu gibidir. Sadece boş dizinleri silebilir.

 

Tek Bir Dosyayı Bulup Kaldırma:

linudata.txt adlı tek bir dosyayı bulmak ve kaldırmak için.

find . -type f -name "linuxdata.txt" -exec rm -f {} \;

Birden Fazla Dosyayı Bulup Kaldırma:

.php  uzantılı birden çok dosyayı bulmak ve kaldırmak için kullanın.

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

Tüm Boş Dosyaları Bulma:

Belirli bir yol altındaki tüm boş dosyaları bulmak için.

find /tmp -type f -empty
 Tüm Boş Dizinleri Bulma:

Tüm boş dizinleri belirli bir yol altında dosyalamak için.

find /tmp -type d -empty

Tüm Gizli Dosyaları Bulma:

Tüm gizli dosyaları bulmak için aşağıdaki komutu kullanın.

find /tmp -type f -name ".*"

Kullanıcıya Göre Tek Bir Dosyayı Bulma:

Sahibi kök dizininin / kök dizini altında linuxdata.txt adlı tüm veya tek dosyaları bulmak için.

find / -user root -name linuxdata.txt 

Kullanıcının Belirli Dosyalarını Bulma:

/home dizini altında firatcanoglu kullanıcısının tüm .php dosyalarını bulmak için.

find /home -user firatcanoglu 

Gruba Dayalı Tüm Dosyaları Bulma:

/home dizini altında teknikpark grubuna ait tüm dosyaları bulmak için

find /home -group teknikpark

Son 50 Günün Değiştirilmiş Dosyalarını Bulma:

30 gün önce değiştirilmiş tüm dosyaları bulmak için.

find / -mtime 30

Son 30 Günde Erişilen Dosyaları Bulma:

30 gün önce erişilen tüm dosyaları bulmak için.

find / -atime 30

Son 50-100 Gün Değiştirilmiş Dosyaları Bulma:

50 günden daha eski ve 100 günden daha yeni  tüm dosyaları bulmak için.

find / -mtime +50 –mtime -100

Son 2 Saatte Değiştirilen Dosyaları Bulma:

Son 2 saat içinde değişen tüm dosyaları bulmak için.

find / -cmin -120

Son 2 Saatte Değiştirilmiş Dosyaları Bulma:

Son 2 saat içinde değiştirilen tüm dosyaları bulmak için.

find / -mmin -120

Son 2 Saat İçinde Erişilen Dosyaları Bulma:

find / -amin -60
 100MB boyutundaki Tüm Dosyaları Bulma ve Silme:

Tüm 100MB boyutundaki tüm dosyaları bulmak ve tek bir komut kullanarak silmek için

find / -type f -size +100M -exec rm -f {} \;

Belirli Dosyaları Bulma ve Silme:

20MB’den büyük tüm .php dosyalarını bulup ve tek bir komut kullanarak silme.

find / -type f -name *.php -size +20M -exec rm {} \;

Bu eğitim yazımızında sonuna geldik.Umarım sizler için faydalı olur.

 

 

 

Bu eğiticiye oy ver
[Total: 3 Average: 5]
Firat CANOĞLU TAĞ