13 poin oleh GN⁺ 2025-03-20 | 2 komentar | Bagikan ke WhatsApp
  • fd adalah program untuk mencari entri di sistem berkas, sebagai alternatif yang lebih sederhana, lebih cepat, dan lebih ramah pengguna dibanding perintah find yang ada
    • Meskipun tidak mendukung semua fitur find, ia menyediakan nilai bawaan yang masuk akal untuk kasus penggunaan umum
  • Windows, macOS, Linux
  • Sintaks yang intuitif: dapat digunakan secara sederhana dengan format fd PATTERN (lebih praktis daripada find -iname '*PATTERN*')
  • Mendukung regular expression dan pola glob
  • Menawarkan performa cepat melalui penelusuran direktori paralel
  • Penyorotan warna berdasarkan tipe file (mirip ls)
  • Mendukung eksekusi perintah paralel
  • Pembedaan huruf besar/kecil cerdas: secara default mengabaikan huruf besar/kecil, tetapi menjadi sensitif jika mengandung huruf besar
  • Secara default mengabaikan file dan direktori tersembunyi
  • Secara default mengabaikan pola .gitignore
  • Nama perintahnya 50% lebih pendek dibanding find

Cara penggunaan

  • Mencari entri yang mengandung pola di direktori saat ini fd netfl
  • Dapat mencari dengan regular expression fd '^x.*rc$'
  • Mencari di direktori tertentu fd passwd /etc
  • Menampilkan daftar semua file di bawah direktori saat ini secara rekursif fd
  • Dapat mencari format file tertentu (gunakan opsi -e) fd -e md
  • Dapat mencari nama file yang persis sama (gunakan opsi -g) fd -g libc.so /usr
  • Mencari termasuk file tersembunyi dan file yang diabaikan (gunakan opsi -H, -I) fd -H pre-commit fd -I num_cpu
  • Mencari di seluruh path, bukan hanya nama file (gunakan opsi -p) fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)'
  • Menjalankan perintah untuk setiap hasil pencarian (-x) fd -e zip -x unzip
  • Meneruskan semua hasil pencarian ke satu perintah (-X) fd -g 'test_*.py' -X vim
  • Sintaks placeholder
    • {}: path lengkap hasil pencarian
    • {.}: path tanpa ekstensi file
    • {/}: nama file
    • {//}: direktori induk
    • {/.}: nama file tanpa ekstensi
  • Dapat mengecualikan direktori atau file tertentu (gunakan opsi -E) fd -H -E .git
  • Dapat membuat file .fdignore untuk menetapkan pola pengecualian global
  • Dapat menghapus file yang ditemukan (-X rm) fd -H '^\.DS_Store$' -tf -X rm

Opsi perintah utama

  • -H: mencari termasuk file dan direktori tersembunyi
  • -I: mengabaikan .gitignore dan .fdignore
  • -p: mencari di seluruh path
  • -e: mencari ekstensi tertentu
  • -x: menjalankan perintah pada hasil pencarian
  • -X: meneruskan semua hasil pencarian ke satu perintah
  • -E: mengecualikan file atau direktori tertentu

Perbandingan performa (Benchmark)

  • Hasil pengujian pencarian pada 750.000 direktori dan 4 juta file
    • Performa find: sekitar 19,9 detik
    • Performa fd: sekitar 854,8 ms
  • 23 kali lebih cepat daripada find

Integrasi dengan program lain

  • Hasil pencarian fd dapat ditampilkan di fzf export FZF_DEFAULT_COMMAND='fd --type file'
  • Menampilkan hasil keluaran fd sebagai menu di rofi fd --type f -e pdf . $HOME | rofi -dmenu
  • Menampilkan hasil keluaran dalam struktur pohon fd | tree --fromfile
  • Dapat menggunakan hasil pencarian di xargs fd -0 -e rs | xargs -0 wc -l

2 komentar

 
dbs0829 2025-03-20

Ada plugin neovim yang menggunakan fd, jadi saya menginstalnya dan sampai sekarang masih memakainya, hehe.

 
GN⁺ 2025-03-20
Komentar Hacker News
  • Saya merilis workflow Alfred. Saya sering menggunakan fd untuk mencari direktori kustom. Saya memakainya setiap hari dan ini sangat luar biasa
    • Hyperfine juga alat hebat yang kurang diapresiasi
  • Saya penggemar sharkdp. Terima kasih telah membuat perangkat lunak keren yang saya gunakan setiap hari
    • Saya menggunakan bat, fd, hexyl, hyperfine
    • Jika para engineer dengan bayaran tinggi menyumbang $10 setiap bulan, internet akan menjadi lebih baik
    • Ada banyak alat hebat, dan kita perlu membangun ekosistem yang mendukungnya
  • Anda bisa memasang fd, bat, numbat, hexyl, hyperfine dengan cepat dan melihat screenshot-nya di Terminal Trove
    • Tersedia tautan untuk fd, bat, numbat, hyperfine, hexyl
    • Bisa memasang dan melihat screenshot
  • Saya berharap flag fd dan rg selaras. Misalnya, baik fd maupun rg sama-sama punya flag --type, tetapi maknanya berbeda
    • Di fd, itu berarti file/direktori/symlink dan sebagainya, sedangkan di rg itu berarti tipe MIME file
    • fd punya flag --extension, tetapi rg tidak
    • Karena penggunaan kedua alat ini sangat berkorelasi, flag dengan nama yang mirip akan bermanfaat
  • Alasan saya tidak memakai alat Rust baru adalah karena sulit mengingat opsi dari alat aslinya
    • Saya memakai ripgrep di VS Code, tetapi di command line saya memakai grep
    • Selama alatnya bekerja, saya tidak peduli ditulis dalam bahasa apa
    • GNU Stow ditulis dalam Perl, tetapi itu salah satu alat Unix favorit saya
    • Bahkan jika alat Rust adalah pengganti drop-in, saya tetap tidak akan memasangnya secara manual
    • Sebagai pengguna, peningkatan kecepatan dan keamanan memori bukan hal yang penting bagi saya
    • Bahasa lain seperti Go juga menjamin keamanan memori, dan partisipasi komunitasnya juga tinggi
    • Saya belum sepenuhnya yakin dengan narasi bahwa Rust adalah penyelamat
    • Jika macOS atau Ubuntu menggantinya dengan alternatif Rust dan itu tidak mengganggu workflow saya, saya juga tidak akan keberatan
  • Saya harus sesekali mengecek Terminal Trove
    • Bisa menemukan pengganti mudah untuk alat yang sering dipakai
    • find bisa diganti dengan fd, time dengan hyperfine, grep dengan ripgrep
    • Ada juga t-rec untuk mengubah asciinema menjadi .gif, dan koji untuk membuat commit secara manual
  • Saya akan mencoba fd. Sulit mengingat cara memakai argumen find, jadi saya biasanya memakai find . | grep what_i_am_looking_for
    • Saya suka perilakunya yang terintegrasi dengan xargs
    • Saya belum menemukan bagaimana fd menangani penelusuran direktori symlink
  • Saya sangat sering memakai fd setiap hari dan memasangnya secara default di perangkat baru
    • Saya sudah lama memakai find, tetapi itu bukan alat yang nyaman digunakan
    • Saya 100% setuju dengan tren utilitas pengganti belakangan ini
    • Mungkin tidak mempertahankan semua fleksibilitas aslinya, tetapi jauh lebih mudah dipakai untuk kasus umum
  • Fakta bahwa secara default banyak folder diabaikan terasa tidak nyaman
    • Saat saya ingin tahu sebuah hal ada di mana dalam sistem, saya memakai find
    • fd memang punya opsi untuk tidak mengabaikan, tetapi saya tidak ingat, jadi saya kembali ke find
  • Saya suka alat CLI Rust baru, tetapi fd sulit diingat cara pakainya seperti tar dan ln
    • Ini bukan salah siapa pun
    • Saya selalu harus membaca ulang manualnya
    • Terlepas dari keanehan GNU find, saya justru lebih mudah mengingatnya