Ödeme Yöntemleri Abuse

Linux'ta dosyaları içeriğine göre arama: ack ve ripgrep

03.05.2023, 23:33

Linux'ta içeriğe göre dosya aramayı kullanmak, büyük ve karmaşık dosya sistemlerinde belirli bilgileri ararken harcanan zamanı ve çabayı önemli ölçüde azaltabilir.

Dosyaları neden içeriğe göre aramanız gerekir?

Bu arama özellikle belirli bir dize veya anahtar kelime içeren dosyaları bulmak istediğinizde ya da belirli bir desen veya kritere uyan tüm dosyaları bulmak istediğinizde yararlı olabilir.

Dosyaları içeriğe göre aramak, büyük metin dosyalarında belirli bir metni bulmak gibi çeşitli görevler için kullanılabilir:

  • büyük metin dosyalarındaki belirli metinler
  • belirli ayarları veya komutları içeren yapılandırma dosyaları ve komut dosyaları
  • kullanıcı adları veya telefon numaraları gibi belirli verileri içeren dosyalar
  • JPEG görüntüleri veya PDF belgeleri içeren tüm dosyaları bulmak gibi içerik türüne göre dosyalar.

Dosyaları içeriğe göre aramanın genel amacı, dosya sistemiyle çalışmayı ve dosya sisteminde ihtiyacınız olan bilgileri bulmayı kolaylaştırmaktır.

ack

Ack yardımcı programı ile başlayalım. 2005 yılında grep'e alternatif olarak oluşturuldu ve geliştiriciler arasında hızla popüler oldu.

Aşağıdakiler de dahil olmak üzere grep'e göre çeşitli avantajları vardır:

  • daha akıllı dosya ve istisna aramaları. Ack varsayılan olarak yalnızca anlamlı olabilecek dosyalarda arama yapar, örneğin .svn veya .git klasörlerini hariç tutar. Ayrıca kendi kurallarınızı ve istisnalarınızı da ekleyebilirsiniz;
  • Ack varsayılan olarak gizli dosya ve dizinleri arar;
  • Ack, grep gibi her yerde, hatta sistem klasörlerinde bile arama yapmaya çalışmaz. Bu, sisteminizde gizlenmiş dosyaları kolayca bulabileceğiniz anlamına gelir.

ack'ın nasıl kullanılacağına dair örnekler:

  • Geçerli klasörde ve alt klasörlerinde "test" kelimesini içeren tüm dosyaları bulun : ack "test"
  • Aynı şey, ancak .bak uzantılı dosyaları hariç tutarak : ack "test" --ignore-file=match:/.bak$/
  • Geçerli klasörde "hello" dizesini içeren tüm dosyaları bulun ve her dosyanın ilk 2 satırının çıktısını alın: ack "hello" --heading --max-count=2

ripgrep

İkinci ilginç araç ripgrep'tir. Birçok yönden ack'a benzer, ancak daha hızlı bir arama algoritması kullanır, bu da onu özellikle büyük projeler için yararlı kılar.

İşte bazı örnekler:

  1. Geçerli klasörde ve alt klasörlerinde "test" kelimesini içeren tüm dosyaları bulun : rg "test"
  2. Aynı, ancak .bak uzantılı dosyaları hariç tutarak : rg "test" --glob "!*.bak"
  3. Geçerli klasörde "hello" dizesini içeren tüm dosyaları bulun ve her dosyanın ilk 2 satırının çıktısını alın: rg "hello" --heading --max-columns=2

Son olarak fzf'den bahsetmekte fayda var. ack ve ripgrep gibi sadece bir string bulucu değildir. Fzf, bir listedeki dosyaları, klasörleri ve öğeleri bulmak için bir yardımcı program olarak kullanılır. Aksi takdirde ack/ripgrep'e benzer şekilde çalışır, ancak sonuçları canlı filtreleme yeteneği eklenmiştir. İşte bazı örnekler:

  • Bilgisayarınızda F harfi ile başlayan dosyaları arayın: locate F | fzf -m
  • Geçerli klasörden çıkın ve istediğim dizine gidin: cd **<TAB> | fzf
  • SVN revizyonunu seçin ve numarayı panoya kopyalayın: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Umarım bu araçlar ihtiyacınız olan dosyaları ve dizeleri hızlı ve verimli bir şekilde bulmanıza yardımcı olur. Hangisini seçerseniz seçin, hepsi işinizi önemli ölçüde hızlandırabilecek gelişmiş aramalar sunar.