1 min read

Linux'ta dosya ve metin arama

Bu yazıda linux işletim sisteminde find ve grep komutlarıyla nasıl dosya ve metin araması yapıldığını inceliyoruz.
Linux'ta dosya ve metin arama

find ile dosya arama

Linux işletim sisteminde find komutunu kullanarak çeşitli filtrelere göre dosya araması yapabilirsiniz. Eğer bir hedef dizin belirtmezseniz komut çalıştığı dizinde arama yapacaktır.

Dosya adı arama

Sadece bir dosya adı belirterek arama yapabilirsiniz.

Örneğin nginx.conf adlı dosya ismini arayalım.

trinity@ZION:~$ find -name nginx.conf
./myapi/nginx.conf
./sample/nginx.conf

Wilcard * ile regex arama

Dosya adının bir kısmı ile de arama yapabiliriz. Örneğin bulunduğumuz dizinde veya alt dizinlerde uzantısı .conf olan bütün dosyaları bulalım.

trinity@ZION:~$ find -name *.conf
./myapi/nginx.conf
./sample/nginx.conf
./node.conf

Son 1 saatte değiştirilmiş olan dosyaları bulma

trinity@ZION:~$ find -mmin -60
.
./myapi
./myapi/nginx.conf
./sample
./sample/nginx.conf
./log/crontab/api.log

Bir kullanıcıya ait olan dosyaları bulma

Bu örnekte /home dizininde morpheus adlı kullanıcıya ait bir dosya olup olmadığını bulalım.

trinity@ZION:~$ find /home -user morpheus
/home
/home/trinity/knock_knock.txt

grep ile metin arama

Metin araması yapmak için ise grep komutu kullanıyoruz. Bu komutla bütün metin dosyalarında aradığımız ifade aranır. Sonuç olarak bulunan satırlar gösterilir.

Örneğin nginx ifadesini bulunduğumuz dizinde arayalım. Burada bir dizine rastlarsa içinde arama yapmaz fakat bizi bundan haberdar eder.

trinity@ZION:~$ grep nginx *
grep: myapi: Is a directory
grep: sample: Is a directory
Sonuç bulunamadı.

Aynı ifadeyi bu kez bütün alt dizinleri kapsayacak şekilde arayalım. Bunu -r flagi ile sağlıyoruz.

trinity@ZION:~$ grep -r nginx *
myapi/nginx.conf:    access_log /var/log/nginx/myapi.access.log;
sample/nginx.conf:   access_log /var/log/nginx/sample.access.log;
İki adet eşleşme bulundu.

Ayrıca dosyanın hangi satırında bulunduğunu da görmek istersek -n flagini de ekleyebiliriz.

trinity@ZION:~$ grep -rn nginx *
myapi/nginx.conf:4:    access_log /var/log/nginx/myapi.access.log;
sample/nginx.conf:9:   access_log /var/log/nginx/sample.access.log;
İki eşleşme bulundu ve satır numaraları belirtildi.