Linux find komutu
675

Linux find komutu

find komutu ile dosya ve dizin aramaları yapılabilir. Kullanılacak parametreler sayesinde bir dosya araması yaparken çok yardımcı olabilecek bir komuttur. Adım adım kullanımına bu yazıda bakacağız.

Temel komut yapısı:

find [dizin yolu] [parametreler] [aranacak ifade]

En basit kullanımından başlayalım ve sonra parametre girerek komutun işleyişine bakalım.

find komutunu bulunduğunuz dizinde direkt çalıştırırsanız, bulunduğunuz dizinde bulunan dosya ve dizinleri gösterir.

linux find komutu

Hedef yol gösterilerek de arama yapılabilir. /home/salih dizininde iken Masaüstü dizininde arama yapalım.

linux find komutu

Şimdi gelelim isim olarak dosya aramaya. Dosya ismiyle arama yapabilmek için -name parametresi kullanılır.

find -name [aranacak dosya adı]

Örnek olarak /home/salih dizininde iken deneme isimli dosyayı aratacağım. find -name deneme

linux find komutu

Görüldüğü üzere deneme isimli dosya Masaüstü dizinindeymiş. Aynı aramayı hedef dizin belirterek de yapabiliriz. Bunun için find komutundan sonra dizin belirtmemiz ve aranacak kelimeyi yazmamız gerecek.

Dosya adına göre arama

-name parametresi ile dosya adına göre arama yapılabilir. Bu arama türünde sadece birebir eşleşmeler gösterilir.

find [dizin yolu] -name [aranacak dosya adı]

Bu durumda örnek komutumuz şu şekilde olacak: find Masaüstü/ -name deneme

linux find komutu

Şu ana kadar direk dosya ismi ile arama yaptık. Eğer bazı karakterleri içeren dosyalar aranacaksa, aranacak kelimelerin başına * işareti getirilir. Mesela Masaüstü dizininde a harfi ile biten dosyaları aratalım.

find Masaüstü -name *a

linux find komutu

Masaüstü dizininde a harfi ile biten 2 tane dosya bulundu. Birde root dizininde conf ile biten dosyaları aratalım.

linux find komutu

conf ile biten dosyalar listelendi. Belki dikkatinizi çekmiştir, bazı dosyalarda erişim engellendi şeklinde uyarı geldi. Sistem dosyalarında doğrudan işlem yapılamamakta. İşlem yapabilmek için root kullanıcısına geçmek ya da yapılan işlemi superuser olarak çalıştırmak gerekecektir. Kullanıcı izinleri ile ilgili konuyu ilerleyen yazılarda inceleyeceğiz ama kısaca değinmek gerekirse; root kullanıcısına geçmek için sudo su komutunu kullanabilir ve bundan sonraki tüm işlemleri root kullanıcısı olarak yapabiliriz ya da tek seferlik yetki için komutun başına sudo komutunu ekleyerek komutu çalıştırabiliriz. Her iki komutta da bizden root parolası isteyecektir. Parolayı girdikten sonra işlem gerçekleştirilecektir.

Ben örneğimde tek seferlik root kullanım izni ile yapacağım.

sudo find / -name *conf

linux find komutu

Dosya değişim zamanına göre arama

Dosya değişim zamanına göre arama yapmak için -ctime parametresi kullanılır ve kaç gün öncesine kadar olan değişim isteniyorsa gün sayısı başında – işareti olarak yazılır. Örnek olarak son 1 gün içinde değişim olan dosyaları arayalım.

find Masaüstü/ -ctime -1

linux find komutu ctime

Dosya tipine göre arama

Yapılan aramalarda sonuçlar hem dosya hemde dizin olarak çıktı verilir. Örneğin aradığınız kelime dizin adında da geçiyorsa bu da çıktı olarak verilir. -type parametresi ile dizin ya da dosya araması yapılabilir.

-type f  :  dosya sonuçlarını gösterir.

-type d : dizin sonuçlarını gösterir.

Örnek olarak png ile biten dizinleri arayalım.

find Resimler -type d -name *png

linux find komutu (-type)

Dosya boyutuna göre arama

Son olarak dosya boyutuna göre arama işlemlerine bakalım. Dosya adına ilave olarak dosya boyutunu da ekleyerek aramayı daha da özel hale getirebiliriz. Boyut belirtmek için -size parametresi kullanılır. Parametreden sonra ise boyut için bir değer yazılır. Boyut direkt yazıldığında sadece o değerde olan dosyalar bulunur. Değerin üstündeki dosyaları bulmak için değer önüne + işareti, değerin altındaki dosyaları bulmak için ise – işareti kullanılır. Boyut belirtilirken boyutun türünün de belirtilmesi gerekir.

Boyut değerleri ise şu şekildedir:

k kilobytes

M megabytes

G gigabytes

T terabytes

P petabytes

Konuyu daha anlaşılır hale getirmek için örnek yapalım. Resimler dizininde bulunan sonu png ile biten ve boyutu 100k olan dosyaları aratmak için komut yapımız şu şekilde olacaktır.  find Resimler/ -name *png -size 100k

Bu komut sonucunda muhtemelen bir sonuç elde edemeyeceğiz çünkü direkt boyutu 100 kb olan bir dosyanın bulunma ihtimali çok zor.

linux find komutu

Görüldüğü gibi bir dosya bulamadık. Parametreyi 100 kb üzerinde olacak şekilde yapacağım :

find Resimler/ -name *png -size +100k

+100k yaparak 100 kb üzerindeki dosyaları bulmasını ve göstermesini istedim.

linux find komutu

Resimler dizininde 100 kb üzeri olan ve dosya adı png ile biten 2 tane dosya bulundu. 100 kb altı olması isteseydim -100k yapacaktım.

Bunun haricinde boyut için arama alanı daha da daraltabilir. Örneğimde 100kb üstü olan tüm dosyalar ekrana geldi. bir aralık belirtilerek aramayı daha özel hale getirebiliriz. Bunun için iki tane boyut belirtmek gerekecektir. Örnek olarak 100kb üstü olan ve 5MB altında olan dosyaları arayalım.

find Resimler/ -name *png -size +100k -size -5M

linux find komutu

Şimdilik find komutu için anlatacaklarım bu kadar. find komutu ile ilgili detaylı bilgiler edinmek için find --help ve man find komutlarından yardım alabilirsiniz.

Bir cevap yazın