fd - ตัวแทนของ `find` ที่เรียบง่าย รวดเร็ว และเป็นมิตรกับผู้ใช้
(github.com/sharkdp)fdเป็นโปรแกรมสำหรับค้นหารายการในระบบไฟล์ โดยเป็นทางเลือกแทนคำสั่งfindแบบดั้งเดิมที่เรียบง่ายกว่า เร็วกว่า และเป็นมิตรกับผู้ใช้มากกว่า- แม้จะไม่ได้รองรับความสามารถทั้งหมดของ
findแต่ก็มีค่าเริ่มต้นที่เหมาะสมสำหรับการใช้งานทั่วไป
- แม้จะไม่ได้รองรับความสามารถทั้งหมดของ
- ใช้งานได้บน Windows, macOS, Linux
- ไวยากรณ์เข้าใจง่าย: ใช้งานได้ง่ายในรูปแบบ
fd PATTERN(สะดวกกว่าfind -iname '*PATTERN*') - รองรับ regular expression และ glob pattern
- ให้ประสิทธิภาพที่รวดเร็วด้วย การค้นหาไดเรกทอรีแบบขนาน
- ไฮไลต์สีตามประเภทไฟล์ (คล้าย
ls) - รองรับ การรันคำสั่งแบบขนาน
- แยกแยะตัวพิมพ์เล็ก-ใหญ่แบบอัจฉริยะ: โดยปกติจะไม่สนใจตัวพิมพ์เล็ก-ใหญ่ แต่ถ้ามีตัวพิมพ์ใหญ่จะทำการแยกแยะ
- ละเว้นไฟล์และไดเรกทอรีที่ซ่อนไว้โดยค่าเริ่มต้น
- ละเว้นแพตเทิร์น
.gitignoreโดยค่าเริ่มต้น - ชื่อคำสั่งสั้นกว่า
find50%
วิธีใช้งาน
- ค้นหารายการที่มีแพตเทิร์นอยู่ในไดเรกทอรีปัจจุบัน
fd netfl - ค้นหาด้วย regular expression
fd '^x.*rc$' - ค้นหาในไดเรกทอรีที่กำหนด
fd passwd /etc - แสดงรายการไฟล์ทั้งหมดใต้ไดเรกทอรีปัจจุบันแบบ recursive
fd - ค้นหาไฟล์ตามนามสกุลที่กำหนด (ใช้ตัวเลือก
-e)fd -e md - ค้นหาชื่อไฟล์แบบตรงตัว (ใช้ตัวเลือก
-g)fd -g libc.so /usr - ค้นหารวมไฟล์ที่ซ่อนและไฟล์ที่ถูกละเว้น (ใช้ตัวเลือก
-H,-I)fd -H pre-commitfd -I num_cpu - ค้นหาจากพาธทั้งหมดแทนชื่อไฟล์ (ใช้ตัวเลือก
-p)fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)' - รันคำสั่งกับผลลัพธ์แต่ละรายการที่ค้นเจอ (
-x)fd -e zip -x unzip - ส่งผลการค้นหาทั้งหมดให้คำสั่งเดียว (
-X)fd -g 'test_*.py' -X vim - ไวยากรณ์ placeholder
- {}: พาธเต็มของผลการค้นหา
- {.}: พาธที่ตัดนามสกุลไฟล์ออก
- {/}: ชื่อไฟล์
- {//}: ไดเรกทอรีแม่
- {/.}: ชื่อไฟล์ที่ตัดนามสกุลออก
- สามารถยกเว้นไดเรกทอรีหรือไฟล์ที่กำหนดได้ (ใช้ตัวเลือก
-E)fd -H -E .git - สามารถสร้างไฟล์
.fdignoreเพื่อกำหนดแพตเทิร์นที่ยกเว้นแบบ global ได้ - ลบไฟล์ที่ค้นพบได้ (
-X rm)fd -H '^\.DS_Store$' -tf -X rm
ตัวเลือกคำสั่งหลัก
-H: ค้นหารวมไฟล์และไดเรกทอรีที่ซ่อนอยู่-I: ไม่สนใจ.gitignoreและ.fdignore-p: ค้นหาจากพาธทั้งหมด-e: ค้นหาตามนามสกุลที่กำหนด-x: รันคำสั่งกับผลการค้นหา-X: ส่งผลการค้นหาทั้งหมดให้คำสั่งเดียว-E: ยกเว้นไฟล์หรือไดเรกทอรีที่กำหนด
การเปรียบเทียบประสิทธิภาพ (Benchmark)
- ผลการทดสอบค้นหาใน 750,000 ไดเรกทอรี และ 4 ล้านไฟล์
- ประสิทธิภาพของ
find: ประมาณ 19.9 วินาที - ประสิทธิภาพของ
fd: ประมาณ 854.8ms
- ประสิทธิภาพของ
- เร็วกว่า
find23 เท่า
การผสานการทำงานกับโปรแกรมอื่น
- แสดงผลการค้นหาจาก
fdในfzfได้export FZF_DEFAULT_COMMAND='fd --type file' - แสดงผลลัพธ์ของ
fdเป็นเมนูในrofifd --type f -e pdf . $HOME | rofi -dmenu - แสดงผลลัพธ์ในโครงสร้างแบบ tree
fd | tree --fromfile - ใช้ผลการค้นหาใน
xargsได้fd -0 -e rs | xargs -0 wc -l
2 ความคิดเห็น
มีปลั๊กอิน neovim ตัวหนึ่งที่ใช้ fd ก็เลยติดตั้งไว้ แล้วก็ใช้มาจนถึงตอนนี้เลยครับ 555
ความคิดเห็นใน Hacker News