13 puan yazan GN⁺ 2025-03-20 | 2 yorum | WhatsApp'ta paylaş
  • fd, dosya sisteminde öğeleri bulmak için kullanılan bir programdır ve mevcut find komutuna göre daha basit, daha hızlı ve daha kullanıcı dostu bir alternatiftir
    • findin tüm özelliklerini desteklemez, ancak yaygın kullanım senaryoları için makul varsayılanlar sunar
  • Windows, macOS, Linux
  • Sezgisel sözdizimi: fd PATTERN biçiminde basitçe kullanılabilir (find -iname '*PATTERN*' komutundan daha pratiktir)
  • Düzenli ifadeler ve glob desenleri desteği
  • Paralel dizin taraması ile hızlı performans
  • Dosya türüne göre renkli vurgulama (ls benzeri)
  • Paralel komut çalıştırma desteği
  • Akıllı büyük/küçük harf ayrımı: varsayılan olarak büyük/küçük harf duyarsızdır, büyük harf içerirse duyarlı olur
  • Gizli dosya ve dizinler varsayılan olarak yok sayılır
  • .gitignore desenleri varsayılan olarak yok sayılır
  • Komut adı finde göre %50 daha kısadır

Kullanım

  • Geçerli dizinde deseni içeren öğeleri ara fd netfl
  • Düzenli ifadeyle arama yapılabilir fd '^x.*rc$'
  • Belirli bir dizinde ara fd passwd /etc
  • Geçerli dizin altındaki tüm dosyaları özyinelemeli olarak listele fd
  • Belirli bir dosya uzantısını ara (-e seçeneği) fd -e md
  • Tam dosya adına göre ara (-g seçeneği) fd -g libc.so /usr
  • Gizli ve yok sayılan dosyaları dahil ederek ara (-H, -I seçenekleri) fd -H pre-commit fd -I num_cpu
  • Dosya adı yerine tam yol üzerinde ara (-p seçeneği) fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)'
  • Bulunan her sonuç için komut çalıştır (-x) fd -e zip -x unzip
  • Tüm arama sonuçlarını tek bir komuta aktar (-X) fd -g 'test_*.py' -X vim
  • Yer tutucu sözdizimi
    • {}: arama sonucunun tam yolu
    • {.}: uzantı hariç yol
    • {/}: dosya adı
    • {//}: üst dizin
    • {/.}: dosya adının uzantısız hali
  • Belirli dizin veya dosyaları hariç tutabilir (-E seçeneği) fd -H -E .git
  • .fdignore dosyası oluşturarak genel hariç tutma desenleri tanımlanabilir
  • Bulunan dosyaları silebilir (-X rm) fd -H '^\.DS_Store$' -tf -X rm

Başlıca komut seçenekleri

  • -H: gizli dosya ve dizinleri dahil ederek ara
  • -I: .gitignore ve .fdignore dosyalarını yok say
  • -p: tam yol üzerinde ara
  • -e: belirli uzantıyı ara
  • -x: arama sonuçlarında komut çalıştır
  • -X: tüm arama sonuçlarını tek bir komuta aktar
  • -E: belirli dosya veya dizinleri hariç tut

Performans karşılaştırması (Benchmark)

  • 750.000 dizin ve 4 milyon dosya üzerinde yapılan arama testi sonucu
    • find performansı: yaklaşık 19,9 saniye
    • fd performansı: yaklaşık 854,8 ms
  • findden 23 kat daha hızlı

Diğer programlarla entegrasyon

  • fd arama sonuçları fzf içinde gösterilebilir export FZF_DEFAULT_COMMAND='fd --type file'
  • fd çıktısı rofi içinde menü olarak gösterilebilir fd --type f -e pdf . $HOME | rofi -dmenu
  • Çıktı sonuçları ağaç yapısında gösterilebilir fd | tree --fromfile
  • Arama sonuçları xargs ile kullanılabilir fd -0 -e rs | xargs -0 wc -l

2 yorum

 
dbs0829 2025-03-20

neovim eklentileri arasında fd kullanan bir şey vardı; kurdum ve o zamandan beri kullanıyorum, haha.

 
GN⁺ 2025-03-20
Hacker News görüşleri
  • Alfred workflow yayınladım. Özel dizinleri aramak için fd’yi çok kullanıyorum. Her gün kullanıyorum ve gerçekten harika
    • hyperfine da hak ettiği değeri görmeyen müthiş bir araç
  • sharkdp hayranıyım. Her gün kullandığımız harika yazılımları yaptığı için teşekkürler
    • bat, fd, hexyl, hyperfine kullanıyorum
    • İyi kazanan mühendisler ayda 10 dolar bağışlasa internet daha iyi bir yer olurdu
    • Harika araçlar çok fazla; bunları destekleyen bir ekosistem kurmamız gerekiyor
  • fd, bat, numbat, hexyl, hyperfine’ı hızlıca kurabilir ve ekran görüntülerini Terminal Trove’da görebilirsiniz
    • fd, bat, numbat, hyperfine, hexyl için bağlantılar veriliyor
    • Kurulum yapıp ekran görüntülerine bakabilirsiniz
  • Keşke fd ve rg bayrakları tutarlı olsaydı. Örneğin hem fd hem rg içinde --type bayrağı var ama anlamları farklı
    • fd için bu dosya/dizin/sembolik bağlantı vb. anlamına geliyor, rg içinse dosya MIME türü anlamına geliyor
    • fd içinde --extension bayrağı var ama rg içinde yok
    • Bu iki aracın kullanımı yüksek korelasyona sahip olduğundan benzer isimli bayraklar faydalı olurdu
  • Yeni Rust araçlarını kullanmama nedenim, orijinal araçların seçeneklerini hatırlamanın zor olması
    • ripgrep’i VS Code içinde kullanıyorum ama komut satırında grep kullanıyorum
    • Araç işini yaptığı sürece hangi dille yazıldığı umurumda değil
    • GNU Stow Perl ile yazılmış ama en sevdiğim Unix araçlarından biri
    • Rust araçları bire bir yerine geçebilen alternatifler olsa bile onları elle kurmazdım
    • Kullanıcı olarak hız iyileştirmeleri ve bellek güvenliği benim için önemli değil
    • Go gibi başka diller de bellek güvenliği sağlıyor ve topluluk katılımı da yüksek
    • Rust’ın kurtarıcı olduğu anlatısına tamamen ikna olmuş değilim
    • macOS ya da Ubuntu bunları Rust alternatifleriyle değiştirse ve iş akışım bozulmasa şikayet etmem
  • Terminal Trove’a ara sıra bakmak gerekiyor
    • Sık kullandığınız araçlar için kolay alternatifler bulabilirsiniz
    • find yerine fd, time yerine hyperfine, grep yerine ripgrep kullanılabilir
    • asciinema.gif’e çeviren t-rec, manuel commit oluşturan koji gibi araçlar da var
  • fd’yi deneyeceğim. findin argüman kullanımını hatırlamak zor olduğu için genelde find . | grep what_i_am_looking_for kullanıyorum
    • xargs ile entegre çalışması hoşuma gitti
    • fd’nin symlink dizinlerinde gezinmeyi nasıl ele aldığını bulamadım
  • Her gün fd’yi yoğun kullanıyorum ve yeni cihazlara varsayılan olarak kuruyorum
    • Uzun süre find kullandım ama rahat bir kullanım deneyimi değil
    • Son dönemdeki alternatif yardımcı araç trendine %100 katılıyorum
    • Orijinal aracın tüm esnekliğini korumayabilirler ama yaygın kullanım senaryolarında kullanmaları çok daha kolay
  • Varsayılan olarak birçok klasörü yok sayması can sıkıcı
    • Sistemde bir şeyin nerede olduğunu gerçekten bilmek istediğimde find kullanıyorum
    • fd içinde yok saymama seçeneği var ama hatırlamayınca yine finde dönüyorum
  • Yeni Rust CLI araçlarını seviyorum ama fd, tar ve ln gibi kullanımı hatırlaması zor araçlardan biri
    • Kimsenin suçu değil
    • Her seferinde kılavuzu yeniden okumam gerekiyor
    • GNU findin tuhaflıklarına rağmen onu daha iyi hatırlıyorum