Terminalde Dosya/Klasör için Filtreleme İşlemleri

18:43 Unknown 0 Comments

   Bazen terminal üzerinde aradığımız dosyayı bulamayız, bunun için kimi zaman farklı komutlar kullanmak yada farklı filtrelemeler uygulamamız gerekir. Bu yazımda bunlara değineceğim.

   İlk olarak find komutuna değinmek istiyorum. Belirttiğimiz dizindeki alt yolları ile birlikte bize sıralıyor, tabii ki filtreleme işlemi için kullanıyor. Örnek olarak sadece dosyaları sıralamak istersek find /dizin/yolu -type f komutunu kullanıyoruz. Sadece klasörleri sıralamak istersek -type d komutunu kullanıyoruz. Burada -type parametresinde belirttiğimiz "f" folder, "d" ise document anlamına gelmektedir.


   Bir dosya arıyoruz diyelim, tam adını biliyorsak locate dosya-adi şeklinde dosyanın lokasyonunu komut ekranına yazdırabiliyoruz. Bir diğer yol ise onlarca dosya içerisinden istediğimizi bulabilmek için. Bildiğiniz üzere ls komutu ve parametreleri bulunduğu dizindeki klasör ve dosyalar gösteriyor. Bu dizin gösterme olayında filtreleme yapabilmek için grep komutunu kullanıyoruz. Dosya/klasör içerisinde sadece config adı geçenleri listelemek için ls | grep 'config' komutunu kullanıyoruz. Ayrıca bu grep komutu içerik okumada da geçerlidir. Yani bir text içeriği bulunan dosyayı okurken cat dosya.txt | grep 'aranan-kelime' şeklinde text içeriğini filtreleme ile search edebiliyoruz.

   Bir dizindeki text içerikli dosyalarının içeriğini filtreleme ile okuyabilmek için xargs komutunu kullanabiliriz. Arayacağımız kelime yine config olsun. Unutmadan birden fazla arama yapacaksak arayacağımız dosyaları ters slash ile ayırabiliriz. Şu komut kullanıyoruz.
$ xargs grep 'config'
   Ayrıca grep kullanımında bazı parametrelerde kullanılabiliyor, help ile diğerlerine bakabilirsiniz. Ben sadece -v parametresini anlatayım. Bu parametre filtreleme yaparken belirttiğimiz girdiye sahip dosya/klasörleri bize göstermez. Aşağıdaki örnekte xml dosyalarını bize göstermeden dizini liste demiş olduk.
$ ls | grep -v '.xml'
   Evet sanırım çoğunu anladık. Anlattıklarımı anladındınımız mı bilemem, anlayanlar için toplu bir örnek vereyim.
$ find /var/www/ -type f | grep '.php' | grep -v '.html' | xargs grep '$config'
   Burada /var/www/ dizinindeki tipi file olanları filtreledi, daha sonra grep ile .php dosyalarını filtreledi, bir sonraki ek parametrede .html dosyalarını filtreleme yaparak bize göstermedi. Ardından filtrelemiş olduğu .php dosyalarının içinde $config değişkeni bulunanları filtreleyerek listeliyoruz.

0 yorum: