Linux’ta “find” Komutunun Kullanımı

Linux işletim sisteminde dosya ve dizin bulmak için sıklıkla kullanılan “find” komutu, kullanıcılara esnek ve güçlü bir arama yeteneği sunmaktadır. Genel sözdizimi, “find [arama yolu] [arama kriterleri]” şeklindedir. Kullanıcı, arama yolunu belirterek hangi dizin veya alt dizinlerde arama yapacağını tanımlar. Arama kriterleri ise dosyaların özelliklerini belirler.

Find Komutunun Temel Kullanımı

En temel kullanım şekli, kullanıcıların belirli bir dizin altında bulunan dosyaları kolayca bulmalarını sağlamaktır. Örneğin, sadece bir dizinde yer alan dosyaları listelemek için “find /home/salih/desktop” komutu kullanılabilir. Bu, belirtilen dizindeki tüm dosya ve alt dizinlerin listesini döndürecektir. Ancak, daha spesifik aramalar yapmak için arama kriterlerini belirtmeniz gerekiyor.

Sık Kullanılan Arama Kriterleri

-name

Find komutunun en çok kullanılan parametrelerinden biri “-name” seçeneğidir. Bu seçenek ile kullanıcı, belirli bir dosya adı veya adı kalıbına göre dosyaları arayabilir. Örneğin, belirli bir dizinde “örnek.txt” adlı bir dosyayı bulmak için kullanıcı “find /home/salih/data -name örnek.txt” komutunu girebilir. Ayrıca, “-iname” parametresi ise büyük/küçük harf duyarsız arama yapma imkanı sunar, bu da dosya aramayı daha da kolaylaştırır.

bilgihouse:~# find /home/salih/desktop/
/home/salih/desktop/
/home/salih/desktop/ssh
/home/salih/desktop/ssh/sshd_config
/home/salih/desktop/ssh/ssh_config
/home/salih/desktop/ssh/sshd_config.d
/home/salih/desktop/ssh/moduli
/home/salih/desktop/ssh/ssh_config.d
bilgihouse:~# find /home/salih/desktop/ -name *config*
/home/salih/desktop/ssh/sshd_config
/home/salih/desktop/ssh/ssh_config
/home/salih/desktop/ssh/sshd_config.d
/home/salih/desktop/ssh/ssh_config.d

Örneğin, belirli bir dizin içerisinde bulunan tüm “.txt” uzantılı dosyaları bulmak istiyorsanız aynı şekilde -name arama kriterini kullanarak bilgisayarınızı tarayabilirsiniz.

bilgihouse:~# find /home/salih/ -name *.txt
/home/salih/desktop/bilgihouse.txt
bilgihouse:~# find / -name *.jpg
/root/resim.jpg

-type

Başka bir faydalı seçenek ise “-type” dır. Bu, kullanıcıların belirli türdeki dosyaları bulmalarını sağlar. Örneğin, sadece dizinleri bulmak için “find /home/salih/desktop -type d” komutu kullanılabilir.

bilgihouse:~# find /home/salih/desktop/ -name *config* -type d
/home/salih/desktop/ssh/sshd_config.d
/home/salih/desktop/ssh/ssh_config.d

-mtime

Son günlerde değiştirilmiş dosyaları bulmak için -mtime arama kriterini kullanabilirsiniz. Örneğin, son 1 gün içinde değişiklik yapılmış tüm dosyaları bulmak için -mtime -1 kriterini kullanmanız gerekiyor.

bilgihouse:~# date
Sun Jan  5 07:11:09 PM +03 2025

bilgihouse:~# find /home/salih/desktop/ -mtime -1
/home/salih/desktop/
/home/salih/desktop/bilgihouse.txt
/home/salih/desktop/ssh
/home/salih/desktop/ssh/sshd_config
/home/salih/desktop/ssh/ssh_config
/home/salih/desktop/ssh/sshd_config.d
/home/salih/desktop/ssh/moduli
/home/salih/desktop/ssh/ssh_config.d

Son bir saat içinde erişilen dosyalara -amin -60 arama kriteri ile ulaşabilirsiniz.

bilgihouse:~# date
Sun Jan  5 07:23:31 PM +03 2025

bilgihouse:~# find /home/salih/desktop/ -amin -60
/home/salih/desktop/bilgihouse.txt
/home/salih/desktop/resim.jpg

bilgihouse:~# ls -l /home/salih/desktop/
total 4
-rw-r--r-- 1 root root    0 Jan  5 18:43 bilgihouse.txt
-rw-r--r-- 1 root root    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root root 4096 Jan  5 01:27 ssh

-size

Ayrıca, dosya boyutuna dayalı arama yapmak da oldukça işlevseldir. Örneğin, 1 MB’den büyük dosyaları bulmak için find /path/to/directory -size +1M komutunu kullanabilirsiniz. Bu komut, belirtilen dizin içerisindeki 1 MB‘tan büyük dosyaları listeleyecektir. Find komutunun sunduğu bu esneklikler,kullanıcıların dosyalarını daha verimli bir şekilde bulmalarına olanak tanır.

bilgihouse:~# ls -lh /home/salih/desktop/
total 4.0K
-rw-r--r-- 1 root root    0 Jan  5 18:43 bilgihouse.txt
-rw-r--r-- 1 root root 2.0M Jan  5 20:51 proje1
-rw-r--r-- 1 root root    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root root 4.0K Jan  5 01:27 ssh

bilgihouse:~# find /home/salih/desktop/ -size +1M
/home/salih/desktop/proje1

-user

Belirli bir kullanıcıya ait dosyaları bulmak için -user kriterini de kullanabilirsiniz. Örneğin, sahibi salih olan .jpg dosyalarını bulmak için aşağıdaki komutu kullanabiliriz.

bilgihouse:~# ls -lh /home/salih/desktop/
total 4.0K
-rw-r--r-- 1 root  root     0 Jan  5 18:43 bilgihouse.txt
-rw-r--r-- 1 salih salih 2.0M Jan  5 20:51 proje1
-rw-r--r-- 1 salih salih    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root  root  4.0K Jan  5 01:27 ssh
-rw-r--r-- 1 root  root  1.0M Jan  5 20:53 test.jpg

bilgihouse:~# find /home/salih/desktop/ -user salih -name *.jpg
/home/salih/desktop/resim.jpg

-perm

Find komutu, dosya izinleriyle ilgili çok gelişmiş filtreleme imkanına sahip bir araçtır. Örneğin, yalnızca okunabilir dosyaların bulunması için bile bir kriter bulunuyor.

bilgihouse:~# ls -lh /home/salih/desktop/
total 12K
-rw-r--r-- 1 root  root     0 Jan  5 18:43 bilgihouse.txt
-r-------- 1 salih salih  632 Jan  5 21:19 notlar
-rw-r--r-- 1 salih salih  596 Jan  5 21:01 proje1
-rw-r--r-- 1 salih salih    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root  root  4.0K Jan  5 01:27 ssh
-rw-r--r-- 1 root  root  1.0M Jan  5 20:53 test.jpg

bilgihouse:~# find /home/salih/ -perm 400
/home/salih/desktop/notlar
bilgihouse:~# find /home/salih/ -perm 444
bilgihouse:~# find /home/salih/ -perm 400
bilgihouse:~# find /home/salih/ -perm 440

Find Komutunun Gelişmiş Özellikleri

Find komutu, yalnızca dosya bulmakla kalmaz, aynı zamanda bulunan dosyalar üzerinde işlem yapmanıza da olanak tanır.

Find komutunun diğer komutlarla entegrasyonu, onun gücünü artıran önemli bir özelliktir. Örneğin, find komutunun çıktılarını başka bir komutla birleştirerek, daha karmaşık işlemler gerçekleştirmek mümkündür. Bu entegrasyon sayesinde, kullanıcılar dosyaları bulduktan sonra onlarla başka işlemlerde yapabilir.

Örneğin, find komutu ile bulunan dosyaların silinmesi, taşınması hatta arşivlenmesi mümkündür. Bu gibi özellikler, find komutunu yalnızca bir arama aracı olmanın ötesine taşır ve kullanıcıların dosya yönetimini daha etkili bir şekilde yapmalarını sağlar.

-xargs

Aradığımız .txt dosyasının arşivlemek için aşağıdaki komut setini kullanabilirsiniz. Bu komut setini genişletmek sizin elinizde. Örneğin, belirli bir dizin altındaki bazı log dosyalarınızı da filtreleyerek arşivleme yapabilirsiniz.

bilgihouse:~# ls -lh /home/salih/desktop/
total 24K
-rw-r--r-- 1 root  root     0 Jan  5 18:43 bilgihouse.txt
-r-------- 1 salih salih  632 Jan  5 21:19 notlar
-rw-r--r-- 1 salih salih  596 Jan  5 21:01 proje1.txt
-rw-r--r-- 1 salih salih    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root  root  4.0K Jan  5 01:27 ssh
-rw-r--r-- 1 root  root  1.0M Jan  5 20:53 test.jpg

bilgihouse:~# cd /home/salih/

bilgihouse:/home/salih# find . -name "*.txt" | xargs tar -czvf /home/salih/desktop/belgeler1.tar.gz
./desktop/bilgihouse.txt
./desktop/proje1.txt

bilgihouse:/home/salih# ls -lh desktop
total 36K
-rw-r--r-- 1 root  root   10K Jan  5 21:57 belgeler1.tar.gz
-rw-r--r-- 1 root  root     0 Jan  5 18:43 bilgihouse.txt
-r-------- 1 salih salih  632 Jan  5 21:19 notlar
-rw-r--r-- 1 salih salih  596 Jan  5 21:01 proje1.txt
-rw-r--r-- 1 salih salih    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root  root  4.0K Jan  5 01:27 ssh
-rw-r--r-- 1 root  root  1.0M Jan  5 20:53 test.jpg

bilgihouse:/home/salih# tar --list -f desktop/belgeler1.tar.gz
./desktop/bilgihouse.txt
./desktop/proje1.txt

Mevcut durumu ve sonrasını görmeniz için sırasıyla bazı komutlar çalıştırdım. Eğer anlamadığınız bir yer olursa mutlaka iletişime geçin.

-delete

bir önceki örneğimizde .txt dosyalarını arşivledik. Bu örneğimizde find komutunu silme işlemi için kullanacağız.

bilgihouse:~#  find /home/salih/desktop/ -name *txt -delete

bilgihouse:~#  ls -lh /home/salih/desktop/
total 28K
-rw-r--r-- 1 root  root   522 Jan  5 22:02 belgeler1.tar.gz
-r-------- 1 salih salih  632 Jan  5 21:19 notlar
-rw-r--r-- 1 salih salih    0 Jan  5 19:16 resim.jpg
drwxr-xr-x 4 root  root  4.0K Jan  5 01:27 ssh
-rw-r--r-- 1 root  root  1.0M Jan  5 20:53 test.jpg

Sık Kullanılanlar

Bu örnekler, dosya ve dizin yönetimi, izleme, bakım ve güvenlik gibi günlük görevlerde kullanışlı olacaktır.

find /var/log -type d -empty -delete
find /var/log -type f -name "*.log" -mtime +30 -delete
find /data -type f -perm 0777
find /var/log -type f -name "*.log" -exec grep -l "failed" {} \;
find /var/log

Yanlış kullanıldığında veri kaybına yol açabilir, önemli ve kritik işlemlerden önce yedek almayı ihmal etmeyin! 😊

Görüşmek dileğiyle.

Similar Posts

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir