[中文] [한국어]
fd
เป็นโปรแกรมที่จะค้นหารายการในระบบไฟล์ของคุณ เป็นทาง find
ที่ง่ายรวดเร็วและใช้งานง่าย แม้ว่ามันจะไม่ได้มีจุดมุ่งหมายเพื่อสนับสนุนฟังก์ชั่นที่ทรงพลังทั้งหมดของ find
แต่ก็ให้ค่าเริ่มต้น (ความเห็น) ที่สมเหตุสมผลสำหรับกรณีการใช้งานส่วนใหญ่
การติดตั้ง•วิธีการใช้•การแก้ไขปัญหา
fd PATTERN
แทน find -iname '*PATTERN*'
ls
).gitignore
ของคุณโดยค่าเริ่มต้นfind
:-) ก่อนอื่นเพื่อให้ได้ภาพรวมของตัวเลือกบรรทัดคำสั่งที่มีอยู่ทั้งหมดคุณสามารถเรียกใช้ fd -h
สำหรับข้อความช่วยเหลือที่กระชับหรือ fd --help
สำหรับเวอร์ชันที่มีรายละเอียดเพิ่มเติม
FD ได้รับการออกแบบมาเพื่อค้นหารายการในระบบไฟล์ของคุณ การค้นหาขั้นพื้นฐานที่สุดที่คุณสามารถทำได้คือเรียกใช้ FD ด้วยอาร์กิวเมนต์เดียว: รูปแบบการค้นหา ตัวอย่างเช่นสมมติว่าคุณต้องการค้นหาสคริปต์เก่าของคุณ (ชื่อรวม netflix
):
> fd netfl
Software/python/imdb-ratings/netflix-details.py
หากเรียกด้วยอาร์กิวเมนต์เดียวเช่นนี้ FD จะค้นหาไดเรกทอรีปัจจุบันซ้ำ ๆ สำหรับรายการใด ๆ ที่ มี รูปแบบ netfl
รูปแบบการค้นหาถือเป็นนิพจน์ทั่วไป ที่นี่เราค้นหารายการที่เริ่มต้นด้วย x
และลงท้ายด้วย rc
:
> cd /etc
> fd ' ^x.*rc$ '
X11/xinit/xinitrc
X11/xinit/xserverrc
ไวยากรณ์นิพจน์ทั่วไปที่ใช้โดย fd
มีการบันทึกไว้ที่นี่
หากเราต้องการค้นหาไดเรกทอรีที่เฉพาะเจาะจงมันสามารถให้เป็นอาร์กิวเมนต์ที่สองของ FD :
> fd passwd /etc
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
FD สามารถเรียกได้โดยไม่มีข้อโต้แย้ง สิ่งนี้มีประโยชน์มากในการรับภาพรวมอย่างรวดเร็วของรายการทั้งหมดในไดเรกทอรีปัจจุบันซึ่งซ้ำ (คล้ายกับ ls -R
):
> cd fd/tests
> fd
testenv
testenv/mod.rs
tests.rs
หากคุณต้องการใช้ฟังก์ชั่นนี้เพื่อแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีที่กำหนดคุณต้องใช้รูปแบบการจับทั้งหมด .
หรือ ^
:
> fd . fd/tests/
testenv
testenv/mod.rs
tests.rs
บ่อยครั้งที่เราสนใจในทุกไฟล์ทุกประเภท สามารถทำได้ด้วยตัวเลือก -e
(หรือ --extension
) ที่นี่เราค้นหาไฟล์ Markdown ทั้งหมดในที่เก็บ FD:
> cd fd
> fd -e md
CONTRIBUTING.md
README.md
ตัวเลือก -e
สามารถใช้ร่วมกับรูปแบบการค้นหา:
> fd -e rs mod
src/fshelper/mod.rs
src/lscolors/mod.rs
tests/testenv/mod.rs
หากต้องการค้นหาไฟล์ที่มีรูปแบบการค้นหาที่มีให้เลือกตัวเลือก -g
(หรือ --glob
):
> fd -g libc.so /usr
/usr/lib32/libc.so
/usr/lib/libc.so
โดยค่าเริ่มต้น FD ไม่ได้ค้นหาไดเรกทอรีที่ซ่อนอยู่และไม่แสดงไฟล์ที่ซ่อนอยู่ในผลการค้นหา เพื่อปิดการใช้งานพฤติกรรมนี้เราสามารถใช้ตัวเลือก -H
(หรือ --hidden
):
> fd pre-commit
> fd -H pre-commit
.git/hooks/pre-commit.sample
หากเราทำงานในไดเรกทอรีที่เป็นที่เก็บ Git (หรือรวมถึงที่เก็บ Git) FD จะไม่ค้นหาโฟลเดอร์ (และไม่แสดงไฟล์) ที่ตรงกับรูปแบบ .gitignore
หนึ่งรูปแบบ เพื่อปิดการใช้งานพฤติกรรมนี้เราสามารถใช้ตัวเลือก -I
(หรือ --no-ignore
):
> fd num_cpu
> fd -I num_cpu
target/debug/deps/libnum_cpus-f5ce7ef99006aa05.rlib
หากต้องการค้นหาไฟล์และไดเรกทอรี ทั้งหมด เพียงแค่รวมคุณสมบัติที่ซ่อนอยู่และเพิกเฉยเพื่อแสดงทุกอย่าง ( -HI
) หรือใช้ -u
/ --unrestricted
โดยค่าเริ่มต้น FD จะตรงกับชื่อไฟล์ของแต่ละไฟล์ อย่างไรก็ตามการใช้ตัวเลือก --full-path
หรือ -p
คุณสามารถจับคู่กับเส้นทางเต็ม
> fd -p -g ' **/.git/config '
> fd -p ' .*/lesson-d+/[a-z]+.(jpg|png) '
แทนที่จะแสดงผลการค้นหาคุณมักจะต้องการ ทำอะไร กับพวกเขา fd
มีสองวิธีในการดำเนินการคำสั่งภายนอกสำหรับผลการค้นหาแต่ละรายการ:
-x
/ --exec
เรียกใช้คำสั่งภายนอก สำหรับผลการค้นหาแต่ละรายการ (ในแบบขนาน)-X
/ --exec-batch
เรียกใช้คำสั่งภายนอกหนึ่งครั้งพร้อม ผลการค้นหาทั้งหมดเป็นอาร์กิวเมนต์ ค้นหาคลังเก็บซิปทั้งหมดและแกะกล่องซ้ำทั้งหมด:
fd -e zip -x unzip
หากมีสองไฟล์ดังกล่าวคือ file1.zip
และ backup/file2.zip
สิ่งนี้จะเรียกใช้งาน unzip file1.zip
และ unzip backup/file2.zip
กระบวนการ unzip
สองกระบวนการทำงานแบบขนาน (หากพบไฟล์เร็วพอ)
ค้นหาไฟล์ *.h
และ *.cpp
ทั้งหมดและจัดรูปแบบอัตโนมัติในสถานที่ด้วย clang-format -i
:
fd -e h -e cpp -x clang-format -i
โปรดทราบว่าตัวเลือก -i
ในการ clang-format
สามารถส่งผ่านเป็นอาร์กิวเมนต์แยกต่างหากได้อย่างไร นี่คือเหตุผลที่เราใส่ตัวเลือก -x
ล่าสุด
ค้นหา test_*.py
และเปิดในตัวแก้ไขที่คุณชื่นชอบ:
fd -g ' test_*.py ' -X vim
โปรดทราบว่าเราใช้ Capital -X
ที่นี่เพื่อเปิดอินสแตนซ์ vim
เดียว หากมีสองไฟล์ดังกล่าว test_basic.py
และ lib/test_advanced.py
สิ่งนี้จะเรียกใช้ vim test_basic.py lib/test_advanced.py
หากต้องการดูรายละเอียดเช่นสิทธิ์ไฟล์เจ้าของขนาดไฟล์ ฯลฯ คุณสามารถบอกให้ fd
แสดงได้โดยเรียกใช้ ls
สำหรับแต่ละผลลัพธ์:
fd … -X ls -lhd --color=always
รูปแบบนี้มีประโยชน์มากที่ fd
ให้ทางลัด คุณสามารถใช้ตัวเลือก -l
/ --list-details
เพื่อดำเนินการ ls
ด้วยวิธีนี้: fd … -l
ตัวเลือก -X
ยังมีประโยชน์เมื่อรวม fd
เข้ากับ ripgrep ( rg
) เพื่อค้นหาภายในคลาสของไฟล์ที่แน่นอนเช่นไฟล์ต้นฉบับ C ++ ทั้งหมด:
fd -e cpp -e cxx -e h -e hpp -X rg ' std::cout '
แปลงไฟล์ *.jpg
ทั้งหมดเป็น *.png
ไฟล์:
fd -e jpg -x convert {} {.}.png
ที่นี่ {}
เป็นตัวยึดตำแหน่งสำหรับผลการค้นหา {.}
เหมือนกันโดยไม่มีส่วนขยายไฟล์ ดูรายละเอียดเพิ่มเติมเกี่ยวกับไวยากรณ์ของตัวยึดด้านล่าง
เอาต์พุตเทอร์มินัลของคำสั่งทำงานจากเธรดแบบขนานโดยใช้ -x
จะไม่ถูกเชื่อมต่อหรืออ่านไม่ออกดังนั้น fd -x
สามารถใช้เพื่อขนานกับงานที่ใช้งานได้มากกว่าไฟล์จำนวนมาก ตัวอย่างนี้คือการคำนวณการตรวจสอบของแต่ละไฟล์ภายในไดเรกทอรี
fd -tf -x md5sum > file_checksums.txt
ตัวเลือก -x
และ -X
ใช้ เทมเพลตคำสั่ง เป็นชุดของอาร์กิวเมนต์ (แทนที่จะเป็นสตริงเดียว) หากคุณต้องการเพิ่มตัวเลือกเพิ่มเติมให้กับ fd
หลังจากเทมเพลตคำสั่งคุณสามารถยกเลิกได้ด้วย ;
-
ไวยากรณ์สำหรับการสร้างคำสั่งคล้ายกับของ GNU ขนาน:
{}
: โทเค็นตัวยึดตำแหน่งที่จะถูกแทนที่ด้วยเส้นทางของผลการค้นหา ( documents/images/party.jpg
){.}
: ชอบ {}
แต่ไม่มีส่วนขยายไฟล์ ( documents/images/party
){/}
: ตัวยึดตำแหน่งที่จะถูกแทนที่ด้วย basename ของผลการค้นหา ( party.jpg
){//}
: พาเรนต์ของเส้นทางที่ค้นพบ ( documents/images
){/.}
: basename โดยมีการลบส่วนขยาย ( party
) หากคุณไม่รวมตัวยึดตำแหน่ง FD จะเพิ่ม {}
โดยอัตโนมัติในตอนท้าย
สำหรับ -x
/ --exec
คุณสามารถควบคุมจำนวนงานขนานโดยใช้ตัวเลือก -j
/ --threads
ใช้ --threads=1
สำหรับการดำเนินการแบบอนุกรม
บางครั้งเราต้องการเพิกเฉยต่อผลการค้นหาจากไดเรกทอรีย่อยเฉพาะ ตัวอย่างเช่นเราอาจต้องการค้นหาไฟล์และไดเรกทอรีที่ซ่อนอยู่ทั้งหมด ( -H
) แต่ไม่รวมการจับคู่ทั้งหมดจากไดเรกทอรี. .git
เราสามารถใช้ตัวเลือก -E
(หรือ --exclude
) สำหรับสิ่งนี้ ต้องใช้รูปแบบลูกโลกโดยพลการเป็นข้อโต้แย้ง:
> fd -H -E .git …
นอกจากนี้เรายังสามารถใช้สิ่งนี้เพื่อข้ามไดเรกทอรีที่ติดตั้ง:
> fd -E /mnt/external-drive …
.. หรือข้ามประเภทไฟล์บางประเภท:
> fd -E ' *.bak ' …
ในการสร้างรูปแบบไม่รวมเช่นถาวรเหล่านี้คุณสามารถสร้างไฟล์. .fdignore
พวกเขาทำงานเหมือนไฟล์ .gitignore
แต่มีความเฉพาะเจาะจงกับ fd
ตัวอย่างเช่น:
> cat ~ /.fdignore
/mnt/external-drive
* .bak
บันทึก
fd
ยังรองรับไฟล์ .ignore
ที่ใช้โดยโปรแกรมอื่น ๆ เช่น rg
หรือ ag
หากคุณต้องการให้ fd
เพิกเฉยต่อรูปแบบเหล่านี้ทั่วโลกคุณสามารถใส่ไว้ในไฟล์ทั่วโลกของ fd
โดยปกติแล้วจะอยู่ใน ~/.config/fd/ignore
ใน macOS หรือ linux และ %APPDATA%fdignore
ใน windows
คุณอาจต้องการรวม .git/
ในไฟล์ fd/ignore
ของคุณเพื่อให้ไดเรกทอรี .git
และเนื้อหาของพวกเขาจะไม่รวมอยู่ในผลลัพธ์หากคุณใช้ตัวเลือก --hidden
คุณสามารถใช้ fd
เพื่อลบไฟล์และไดเรกทอรีทั้งหมดที่ตรงกับรูปแบบการค้นหาของคุณ หากคุณต้องการลบไฟล์เท่านั้นคุณสามารถใช้ตัวเลือก --exec-batch
/ -X
เพื่อเรียก rm
ตัวอย่างเช่นหากต้องการลบไฟล์ .DS_Store
ทั้งหมดซ้ำรัน:
> fd -H ' ^.DS_Store$ ' -tf -X rm
หากคุณไม่แน่ใจให้โทรหา fd
โดยไม่ต้อง -X rm
ก่อน อีกทางเลือกหนึ่งใช้ตัวเลือก "อินเทอร์แอคทีฟ" ของ rm
:
> fd -H ' ^.DS_Store$ ' -tf -X rm -i
หากคุณต้องการลบไดเรกทอรีระดับหนึ่งคุณสามารถใช้เทคนิคเดียวกันได้ คุณจะต้องใช้ธง rm
S --recursive
/ -r
เพื่อลบไดเรกทอรี
บันทึก
มีสถานการณ์ที่ใช้ fd … -X rm -r
สามารถทำให้เกิดเงื่อนไขการแข่งขัน: หากคุณมีเส้นทางเช่น …/foo/bar/foo/…
และต้องการลบไดเรกทอรีทั้งหมดที่ชื่อ foo
คุณสามารถจบลงในสถานการณ์ที่ ไดเรกทอรี foo
Outer จะถูกลบออกก่อนนำไปสู่ (ไม่เป็นอันตราย) "'foo/bar/foo': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" ในการโทร rm
นี่คือผลลัพธ์ของ fd -h
หากต้องการดูชุดตัวเลือกบรรทัดคำสั่งเต็มรูปแบบให้ใช้ fd --help
ซึ่งรวมถึงข้อความช่วยเหลือที่มีรายละเอียดมากขึ้น
Usage: fd [OPTIONS] [pattern] [path]...
Arguments:
[pattern] the search pattern (a regular expression, unless '--glob' is used; optional)
[path]... the root directories for the filesystem search (optional)
Options:
-H, --hidden Search hidden files and directories
-I, --no-ignore Do not respect .(git|fd)ignore files
-s, --case-sensitive Case-sensitive search (default: smart case)
-i, --ignore-case Case-insensitive search (default: smart case)
-g, --glob Glob-based search (default: regular expression)
-a, --absolute-path Show absolute instead of relative paths
-l, --list-details Use a long listing format with file metadata
-L, --follow Follow symbolic links
-p, --full-path Search full abs. path (default: filename only)
-d, --max-depth <depth> Set maximum search depth (default: none)
-E, --exclude <pattern> Exclude entries that match the given glob pattern
-t, --type <filetype> Filter by type: file (f), directory (d/dir), symlink (l),
executable (x), empty (e), socket (s), pipe (p), char-device
(c), block-device (b)
-e, --extension <ext> Filter by file extension
-S, --size <size> Limit results based on the size of files
--changed-within <date|dur> Filter by file modification time (newer than)
--changed-before <date|dur> Filter by file modification time (older than)
-o, --owner <user:group> Filter by owning user and/or group
--format <fmt> Print results according to template
-x, --exec <cmd>... Execute a command for each search result
-X, --exec-batch <cmd>... Execute a command with all search results at once
-c, --color <when> When to use colors [default: auto] [possible values: auto,
always, never]
--hyperlink[=<when>] Add hyperlinks to output paths [default: never] [possible
values: auto, always, never]
-h, --help Print help (see more with '--help')
-V, --version Print version
ลองค้นหาโฟลเดอร์บ้านของฉันสำหรับไฟล์ที่สิ้นสุดใน [0-9].jpg
มันมีไดเรกทอรีย่อย ~ 750.000 และประมาณ 4 ล้านไฟล์ สำหรับการวิเคราะห์ค่าเฉลี่ยและสถิติฉันใช้ไฮเปอร์ไฟน เกณฑ์มาตรฐานต่อไปนี้จะดำเนินการด้วยแคชดิสก์ "อบอุ่น"/ที่เติมไว้ล่วงหน้า (ผลลัพธ์สำหรับแคชดิสก์ "เย็น" แสดงแนวโน้มเดียวกัน)
เริ่มต้นด้วย find
:
Benchmark 1: find ~ -iregex '.*[0-9].jpg$'
Time (mean ± σ): 19.922 s ± 0.109 s
Range (min … max): 19.765 s … 20.065 s
find
เร็วกว่ามากหากไม่จำเป็นต้องทำการค้นหาการแสดงออกปกติ:
Benchmark 2: find ~ -iname '*[0-9].jpg'
Time (mean ± σ): 11.226 s ± 0.104 s
Range (min … max): 11.119 s … 11.466 s
ตอนนี้ลองเหมือนกันสำหรับ fd
โปรดทราบว่า fd
ดำเนินการค้นหานิพจน์ปกติโดยค่าเริ่มต้น ตัวเลือก -u
/ --unrestricted
ตัวเลือกเป็นสิ่งจำเป็นที่นี่เพื่อการเปรียบเทียบที่เป็นธรรม มิฉะนั้น fd
ไม่จำเป็นต้องสำรวจโฟลเดอร์ที่ซ่อนอยู่และเส้นทางที่ถูกละเว้น (ดูด้านล่าง):
Benchmark 3: fd -u '[0-9].jpg$' ~
Time (mean ± σ): 854.8 ms ± 10.0 ms
Range (min … max): 839.2 ms … 868.9 ms
สำหรับตัวอย่างนี้โดยเฉพาะ fd
นั้นเร็วกว่า find -iregex
ประมาณ 23 เท่า และเร็วกว่า find -iname
ประมาณ 13 เท่า โดยวิธีการเครื่องมือทั้งสองพบไฟล์ 546 ที่แน่นอน
หมายเหตุ : นี่เป็นเกณฑ์มาตรฐาน หนึ่ง ในเครื่อง หนึ่งโดยเฉพาะ ในขณะที่เราได้ทำการทดสอบที่แตกต่างกันมากมาย (และพบผลลัพธ์ที่สอดคล้องกัน) สิ่งต่าง ๆ อาจแตกต่างกันสำหรับคุณ! เราสนับสนุนให้ทุกคนลองใช้ด้วยตัวเอง ดูที่เก็บนี้สำหรับสคริปต์ที่จำเป็นทั้งหมด
เกี่ยวกับความเร็วของ FD เครดิตจำนวนมากไปที่ regex
และ ignore
ลังที่ใช้ใน Ripgrep (ลองดู!)
fd
ไม่พบไฟล์ของฉัน! โปรดจำไว้ว่า fd
ละเว้นไดเรกทอรีและไฟล์ที่ซ่อนอยู่โดยค่าเริ่มต้น นอกจากนี้ยังไม่สนใจรูปแบบจากไฟล์. .gitignore
หากคุณต้องการตรวจสอบให้แน่ใจว่าได้ค้นหาทุกไฟล์ที่เป็นไปได้ให้ใช้ตัวเลือก -u
/ --unrestricted
ตัวเลือกเสมอ (หรือ -HI
เพื่อเปิดใช้งานไฟล์ที่ซ่อนอยู่และถูกละเว้น):
> fd -u …
fd
สามารถ Colorize Files โดยส่วนขยายเช่น ls
เพื่อให้สิ่งนี้ทำงานได้ต้องตั้งค่าตัวแปรสภาพแวดล้อม LS_COLORS
โดยทั่วไปค่าของตัวแปรนี้จะถูกตั้งค่าโดยคำสั่ง dircolors
ซึ่งให้รูปแบบการกำหนดค่าที่สะดวกเพื่อกำหนดสีสำหรับรูปแบบไฟล์ที่แตกต่างกัน ในการแจกแจงส่วนใหญ่ควรตั้งค่า LS_COLORS
แล้ว หากคุณอยู่บนหน้าต่างหรือหากคุณกำลังมองหาตัวแปรทางเลือกที่สมบูรณ์ (หรือมีสีสัน) มากขึ้นดูที่นี่ที่นี่หรือที่นี่
fd
ยังให้เกียรติตัวแปรสภาพแวดล้อม NO_COLOR
fd
ดูเหมือนจะไม่ตีความรูปแบบ regex ของฉันอย่างถูกต้อง ตัวละคร Regex พิเศษจำนวนมาก (เช่น []
, ^
, $
, .. ) เป็นตัวละครพิเศษในเชลล์ของคุณ หากมีข้อสงสัยให้แน่ใจว่าได้ใส่เครื่องหมายคำพูดเดียวรอบรูปแบบ regex:
> fd ' ^[A-Z][0-9]+$ '
หากรูปแบบของคุณเริ่มต้นด้วยเส้นประคุณต้องเพิ่ม --
เพื่อส่งสัญญาณการสิ้นสุดของตัวเลือกบรรทัดคำสั่ง มิฉะนั้นรูปแบบจะถูกตีความว่าเป็นตัวเลือกบรรทัดคำสั่ง หรือใช้คลาสอักขระที่มีอักขระยัติภังค์เดี่ยว:
> fd -- ' -pattern '
> fd ' [-]pattern '
alias
ES หรือฟังก์ชั่นเชลล์ ไม่สามารถใช้ฟังก์ชั่นเชลล์ alias
และเชลล์สำหรับการดำเนินการคำสั่งผ่าน fd -x
หรือ fd -X
ใน zsh
คุณสามารถทำให้นามแฝงทั่วโลกผ่าน alias -g myalias="…"
ใน bash
คุณสามารถใช้ export -f my_function
เพื่อให้พร้อมกับกระบวนการเด็ก คุณยังคงต้องโทรหา fd -x bash -c 'my_function "$1"' bash
สำหรับกรณีการใช้งานอื่น ๆ หรือเชลล์ให้ใช้เชลล์สคริปต์ (ชั่วคราว)
fzf
คุณสามารถใช้ FD เพื่อสร้างอินพุตสำหรับ Fuzzy Fuzzy Finder FZF:
export FZF_DEFAULT_COMMAND= ' fd --type file '
export FZF_CTRL_T_COMMAND= " $FZF_DEFAULT_COMMAND "
จากนั้นคุณสามารถพิมพ์ vim <Ctrl-T>
บนเทอร์มินัลของคุณเพื่อเปิด FZF และค้นหาผ่าน FD-results
หรือคุณอาจต้องการติดตามลิงก์สัญลักษณ์และรวมไฟล์ที่ซ่อนอยู่ (แต่ไม่รวมโฟลเดอร์ .git
):
export FZF_DEFAULT_COMMAND= ' fd --type file --follow --hidden --exclude .git '
คุณสามารถใช้เอาต์พุตสีของ FD ภายใน FZF ได้โดยการตั้งค่า:
export FZF_DEFAULT_COMMAND= " fd --type file --color=always "
export FZF_DEFAULT_OPTS= " --ansi "
สำหรับรายละเอียดเพิ่มเติมดูส่วนเคล็ดลับของ FZF ReadMe
rofi
Rofi เป็นแอปพลิเคชั่นเมนูเปิดใช้งานกราฟิกที่สามารถสร้างเมนูได้โดยการอ่านจาก Stdin ท่อส่งออก fd
เข้าสู่โหมด rofi
S -dmenu
สร้างรายการไฟล์และไดเรกทอรีที่ค้นพบฟัซซี่
สร้างรายการหลายรายการที่เลือกได้หลายตัวเลือกของไฟล์ PDF ภายใต้ $HOME
Directory ของคุณและเปิดการเลือกด้วยโปรแกรมดู PDF ที่กำหนดค่าของคุณ หากต้องการแสดงรายการประเภทไฟล์ทั้งหมดให้วางอาร์กิวเมนต์ -e pdf
fd --type f -e pdf . $HOME | rofi -keep-right -dmenu -i -p FILES -multi-select | xargs -I {} xdg-open {}
ในการแก้ไขรายการที่นำเสนอโดย ROFI ให้เพิ่มอาร์กิวเมนต์ลงในคำสั่ง fd
ในการปรับเปลี่ยนพฤติกรรมการค้นหาของ ROFI ให้เพิ่มอาร์กิวเมนต์ลงในคำสั่ง rofi
emacs
แพ็คเกจ EMACS Find-File-in-Project สามารถใช้ FD เพื่อค้นหาไฟล์
หลังจากติดตั้ง find-file-in-project
แล้วให้เพิ่มบรรทัด (setq ffip-use-rust-fd t)
ลงในไฟล์ ~/.emacs
หรือ ~/.emacs.d/init.el
ของคุณ
ใน EMACS Run Mx find-file-in-project-by-selected
เพื่อค้นหาไฟล์ที่ตรงกัน อีกทางเลือกหนึ่งเรียกใช้ Mx find-file-in-project
เพื่อแสดงรายการไฟล์ที่มีอยู่ทั้งหมดในโครงการ
ในการจัดรูปแบบเอาต์พุตของ fd
เป็นต้นไม้ไฟล์คุณสามารถใช้คำสั่ง tree
ด้วย --fromfile
:
❯ fd | tree --fromfile
สิ่งนี้มีประโยชน์มากกว่าการรัน tree
รีด้วย fd
เองเพราะ tree
ไม่ได้เพิกเฉยต่อไฟล์ใด ๆ ตามค่าเริ่มต้น
❯ fd --extension rs | tree --fromfile
.
├── build.rs
└── src
├── app.rs
└── error.rs
บนทุบตีและคล้ายกันคุณสามารถสร้างนามแฝง:
❯ alias as-tree= ' tree --fromfile '
xargs
หรือ parallel
โปรดทราบว่า fd
มีคุณสมบัติในตัวสำหรับการดำเนินการคำสั่งด้วยตัวเลือก -x
/ --exec
และ -X
/ --exec-batch
หากคุณต้องการคุณยังสามารถใช้ร่วมกับ xargs
:
> fd -0 -e rs | xargs -0 wc -l
ที่นี่ตัวเลือก -0
บอกให้ FD แยกผลการค้นหาด้วยอักขระ null (แทนที่จะเป็น newLines) ในทำนองเดียวกันตัวเลือก -0
ของ xargs
จะบอกให้อ่านอินพุตด้วยวิธีนี้
... และการแจกแจง Linux ที่ใช้ Debian อื่น ๆ
หากคุณเรียกใช้ Ubuntu 19.04 (Disco Dingo) หรือใหม่กว่าคุณสามารถติดตั้งแพ็คเกจที่ได้รับการดูแลอย่างเป็นทางการ:
apt install fd-find
โปรดทราบว่าไบนารีเรียกว่า fdfind
เป็นชื่อไบนารี fd
ถูกใช้โดยแพ็คเกจอื่นแล้ว ขอแนะนำว่าหลังจากการติดตั้งคุณเพิ่มลิงก์ไปยัง fd
โดยดำเนินการคำสั่ง ln -s $(which fdfind) ~/.local/bin/fd
เพื่อใช้ fd
ในลักษณะเดียวกับในเอกสารนี้ ตรวจสอบให้แน่ใจว่า $HOME/.local/bin
อยู่ใน $PATH
ของคุณ
หากคุณใช้ Ubuntu รุ่นเก่าคุณสามารถดาวน์โหลดแพ็คเกจ .deb
ล่าสุดจากหน้ารีลีสและติดตั้งผ่าน:
dpkg -i fd_9.0.0_amd64.deb # adapt version number and architecture
โปรดทราบว่าแพ็คเกจ. deb ในหน้ารีลีสสำหรับโครงการนี้ยังคงตั้งชื่อ fd
ที่เรียกใช้งานได้
หากคุณเรียกใช้ Debian Buster หรือใหม่กว่าคุณสามารถติดตั้งแพ็คเกจ Debian ที่ได้รับการดูแลอย่างเป็นทางการ:
apt-get install fd-find
โปรดทราบว่าไบนารีเรียกว่า fdfind
เป็นชื่อไบนารี fd
ถูกใช้โดยแพ็คเกจอื่นแล้ว ขอแนะนำว่าหลังจากการติดตั้งคุณเพิ่มลิงก์ไปยัง fd
โดยดำเนินการคำสั่ง ln -s $(which fdfind) ~/.local/bin/fd
เพื่อใช้ fd
ในลักษณะเดียวกับในเอกสารนี้ ตรวจสอบให้แน่ใจว่า $HOME/.local/bin
อยู่ใน $PATH
ของคุณ
โปรดทราบว่าแพ็คเกจ. deb ในหน้ารีลีสสำหรับโครงการนี้ยังคงตั้งชื่อ fd
ที่เรียกใช้งานได้
เริ่มต้นด้วย Fedora 28 คุณสามารถติดตั้ง fd
จากแหล่งแพ็คเกจอย่างเป็นทางการ:
dnf install fd-find
คุณสามารถติดตั้งแพ็คเกจ FD จากแหล่งที่เป็นทางการหากคุณเปิดใช้งานที่เก็บที่เหมาะสม:
apk add fd
คุณสามารถติดตั้งแพ็คเกจ FD จาก repos อย่างเป็นทางการ:
pacman -S fd
คุณยังสามารถติดตั้ง FD จาก AUR
คุณสามารถใช้ fd ebuild จาก repo อย่างเป็นทางการ:
emerge -av fd
คุณสามารถติดตั้งแพ็คเกจ FD จาก Repo อย่างเป็นทางการ:
zypper in fd
คุณสามารถติดตั้ง fd
ผ่าน XBPS-Install:
xbps-install -S fd
คุณสามารถติดตั้งแพ็คเกจ FD จาก Repo อย่างเป็นทางการ:
apt-get install fd
คุณสามารถติดตั้งแพ็คเกจ FD จาก Repo อย่างเป็นทางการ:
eopkg install fd
คุณสามารถติดตั้งแพ็คเกจ fd
จาก Fedora COPR
dnf copr enable tkbcopr/fd
dnf install fd
รุ่นอื่นที่ใช้ Malloc ช้ากว่าแทน Jemalloc ยังมีให้บริการจาก repo epel8/9 เป็นแพ็คเกจ fd-find
คุณสามารถติดตั้ง fd
ด้วย Homebrew:
brew install fd
…หรือกับ MacPorts:
port install fd
คุณสามารถดาวน์โหลดไบนารีที่สร้างไว้ล่วงหน้าได้จากหน้าเผยแพร่
หรือคุณสามารถติดตั้ง fd
ผ่าน Scoop:
scoop install fd
หรือผ่านช็อคโกแลต:
choco install fd
หรือผ่านปีก:
winget install sharkdp.fd
คุณสามารถติดตั้งแพ็คเกจ FD จาก Repo อย่างเป็นทางการ:
guix install fd
คุณสามารถใช้ Nix Package Manager เพื่อติดตั้ง fd
:
nix-env -i fd
คุณสามารถใช้ flox เพื่อติดตั้ง fd
ลงในสภาพแวดล้อม flox:
flox install fd
คุณสามารถติดตั้งแพ็คเกจ FD-Find ได้จาก Repo อย่างเป็นทางการ:
pkg install fd-find
บน Linux และ MacOS คุณสามารถติดตั้งแพ็คเกจ FD-Find:
npm install -g fd-find
ด้วยสินค้าแพ็คเกจของ Rust's Package คุณสามารถติดตั้ง FD ผ่าน:
cargo install fd-find
โปรดทราบว่าจำเป็นต้องใช้ Rust เวอร์ชัน 1.77.2 หรือใหม่กว่า
make
เป็นสิ่งจำเป็นสำหรับการสร้าง
หน้าปล่อยรวมถึงไบนารีที่รวบรวมไว้ล่วงหน้าสำหรับ Linux, MacOS และ Windows นอกจากนี้ยังมีไบนารีที่เชื่อมโยงแบบคงที่ด้วย: มองหาคลังเก็บที่มี musl
ในชื่อไฟล์
git clone https://github.com/sharkdp/fd
# Build
cd fd
cargo build
# Run unit tests and integration tests
cargo test
# Install
cargo install --path .
fd
มีการแจกจ่ายภายใต้ข้อกำหนดของทั้งใบอนุญาต MIT และใบอนุญาต Apache 2.0
ดูไฟล์ License-Apache และใบอนุญาตสำหรับรายละเอียดใบอนุญาต