fd เป็นทางเลือกที่เรียบง่ายกว่าคำสั่ง find มันใช้ syntax ที่สั้นและโครงสร้างคำสั่งย่อ เพื่อให้คำสั่งที่คุณพิมพ์สั้นและตรงประเด็น อย่างไรก็ตาม ความขาด verbosity ที่ทำให้ fd พิมพ์ง่าย ทำให้มันเข้าใจยากกว่า fd ยังรัน pattern-matching เร็วกว่าคำสั่ง find เริ่มต้น เรียนรู้วิธีใช้ fd บน Linux และ macOS
ติดตั้ง fd บน Linux
fd ไม่ได้มาพร้อมกับระบบมากนัก คุณจะต้องใช้ package manager ที่คุณชอบเพื่อดาวน์โหลดและติดตั้งแอปพลิเคชัน และจากนั้นคุณสามารถรันได้จากภายใน Terminal
Ubuntu
มันจะมาพร้อม Ubuntu Disco Dingo 19.04 แต่ถ้าไม่ใช่ คุณจะต้องดาวน์โหลดและติดตั้ง สำหรับ Ubuntu และ distro อื่นๆ ที่พัฒนาจาก Debian คุณจะต้องการรันคำสั่งต่อไปนี้เพื่อดาวน์โหลดและติดตั้งโปรแกรม
wget https://github.com/sharkdp/fd/releases/download/v7.3.0/fd-musl_7.3.0_amd64.deb sudo dpkg -i fd-musl_7.3.0_amd64.deb
หากคุณต้องการรุ่น 32-bit หรือ build อื่น โหลดจาก GitHub releases page สำหรับ fd
Debian
บน Debian Buster หรือใหม่กว่า คุณสามารถติดตั้ง fd จาก official Debian-maintained repository
sudo apt-get install fd-find
Fedora
จาก Fedora 28 fd สามารถติดตั้งจาก official package versions
dnf install fd-find
Arch Linux
คล้ายกัน ผู้ใช้ Arch สามารถดึง fd จาก official repos:
pacman -S fd
Gentoo Linux
ผู้ใช้ Gentoo สามารถใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลด fd ebuild:
emerge -av fd
macOS
หากคุณรัน macOS ติดตั้ง Homebrew แล้วใช้คำสั่งด้านล่างเพื่อติดตั้ง fd:
brew install fd
การใช้ fd บน Linux

คำสั่ง fd มีโครงสร้างพื้นฐานเป็น fd pattern เทียบกับ find . -iname 'pattern'
เพื่อค้นหาไฟล์โดยชื่อ ใช้คำสั่งต่อไปนี้:
fd filename
นี่ค้นหาภายใน preset working directory รวม subdirectories เพื่อค้นหาภายในไดเรกทอรีเฉพาะ ระบุมันหลัง search term ของคุณ:
fd filename /path/to/search
การรันคำสั่งบนผลลัพธ์ (Executing Commands on Results)
เหมือน find fd มีฟังก์ชันที่ส่งไฟล์ที่เจอไปยังคำสั่งอื่นเพื่อรัน Where find ใช้ find . -iname pattern -exec command fd ใช้แฟล็ก -x:
fd -e zip -x unzip
คำสั่งนี้จะส่งไฟล์ zip ทั้งหมดในไดเรกทอรีไปยังคำสั่ง unzip คุณสามารถใช้สัญลักษณ์ต่อไปนี้ภายใน "phrase" ของคำสั่ง execute เพื่อส่งข้อมูลในวิธีเฉพาะ
{}: Placeholder แทนที่ด้วย path ของ search result (files/images/portrait.jpg){/}: Placeholder ที่จะถูกแทนที่ด้วย filename ของ result เท่านั้น รู้จักใน UNIX ว่า basename (portrait.jpg){//}: Placeholder แทนที่ด้วย parent directories ของ found items (files/images){.}: Placeholder แทนที่ด้วย path ไปยัง filename โดยไม่มี extension (files/images/portrait){/.}: Placeholder แทนที่ด้วย basename ของ found item โดยไม่มี extension (portrait)
พิจารณาตัวอย่างต่อไปนี้ ใช้สอง placeholder symbols ที่อ้างอิงข้างต้น:
fd -e flac -x ffmpeg -i {} -c:a libopus {.}.opus
แฟล็ก fd ที่มีประโยชน์อื่นๆ
-e: ค้นหา extension ของไฟล์เท่านั้น โดยไม่มี dot แยก-E pattern: ยกเว้นผลลัพธ์ที่จับคู่กับ pattern ต่อไปนี้--changed-newer-than date|duration: กรองผลลัพธ์ตามเวลาตั้งแต่การแก้ไขไฟล์ จะแสดงเฉพาะไฟล์ที่มี modification dates หลังจากวันที่ระบุ เวลาสามารถระบุเป็น duration ที่นับย้อนกลับจากปัจจุบัน (10h,1d,35min) หรือตั้งเป็นเวลาเฉพาะ ("YYYY-MM-DD HH:MM:SS")- --changed-older-than date|duration: เหมือน --change-newer แต่จะแสดงไฟล์ที่แก้ไขก่อนวันที่หรือ duration ที่ระบุ ไม่ใช่หลัง
-t: แสดงเฉพาะไฟล์ประเภทที่ระบุ (-tf สำหรับไฟล์, -td สำหรับไดเรกทอรี, -tx สำหรับ executables, -tl สำหรับ symlinks, -te สำหรับไฟล์ว่าง)-p: ค้นหาภายใน entire pathname ไม่ใช่แค่ filename-s: บังคับ case-sensitivity โดยค่าเริ่มต้น fd ไม่สนใจ case เว้นแต่จะพิมพ์ตัวใหญ่ใน search pattern-H: แสดง hidden files และ directories ในผลลัพธ์-L: ติดตาม links เข้าไปใน symlinked directories
fd เป็นทางเลือกที่ดีสำหรับคำสั่ง find หากประสบการณ์ของคือว่าคำสั่ง "find" ยากต่อการใช้ คุณอาจโชคดีกว่าด้วย fd ลองดูและแจ้งให้เรารู้ว่ามันมีประโยชน์ต่อคุณไหม