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.
İçindekiler
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
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.
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.