Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ fd เพื่อค้นหาไฟล์อย่างรวดเร็วใน Linux และ macOS

วิธีใช้ fd เพื่อค้นหาไฟล์อย่างรวดเร็วใน Linux และ macOS

fd เป็นทางเลือกที่ง่ายกว่าสำหรับคำสั่ง find มันใช้ไวยากรณ์ที่ถูกตัดทอนและโครงสร้างคำสั่งแบบย่อเพื่อให้คำสั่งที่พิมพ์ของคุณสั้นและตรงประเด็น อย่างไรก็ตาม การขาดคำฟุ่มเฟือยที่ทำให้ fd ง่ายต่อการพิมพ์ทำให้เข้าใจยากขึ้น fd ยังเรียกใช้การจับคู่รูปแบบได้เร็วกว่าคำสั่งค้นหาเริ่มต้น เรียนรู้วิธีใช้ fd บน Linux และ macOS

ติดตั้ง fd บน Linux

fd ไม่ได้จัดส่งในหลายระบบโดยค่าเริ่มต้น คุณจะต้องใช้ตัวจัดการแพ็คเกจที่คุณต้องการเพื่อดาวน์โหลดและติดตั้งแอปพลิเคชัน จากนั้นจึงเรียกใช้ได้จากภายใน Terminal

อูบุนตู

จะจัดส่งบน Ubuntu Disco Dingo 19.04 ไม่เช่นนั้นคุณจะต้องดาวน์โหลดและติดตั้ง สำหรับ Ubuntu และ Linux distros ที่ใช้ 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 บิตหรือบิลด์อื่น ให้ดาวน์โหลดจากหน้าการเผยแพร่ GitHub สำหรับ fd

เดเบียน

ใน Debian Buster หรือใหม่กว่า คุณสามารถติดตั้ง fd จากที่เก็บที่ดูแลโดย Debian อย่างเป็นทางการ

sudo apt-get install fd-find

Fedora

จาก Fedora 28 สามารถติดตั้ง fd ได้จากเวอร์ชันแพ็คเกจอย่างเป็นทางการ

dnf install fd-find

Arch Linux

ในทำนองเดียวกัน ผู้ใช้ Arch สามารถคว้า fd จาก repos อย่างเป็นทางการ:

pacman -S fd

Gentoo Linux

ผู้ใช้ Gentoo สามารถใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลด fd ebuild:

emerge -av fd

macOS

หากคุณใช้ macOS ให้ติดตั้ง Homebrew จากนั้นใช้คำสั่งด้านล่างเพื่อติดตั้ง fd:

brew install fd

การใช้ fd บน Linux

วิธีใช้ fd เพื่อค้นหาไฟล์อย่างรวดเร็วใน Linux และ macOS

คำสั่ง fd มีโครงสร้างพื้นฐานของ fd pattern เมื่อเทียบกับ find . -iname 'pattern' .

หากต้องการค้นหาไฟล์โดยใช้ชื่อ ให้ใช้คำสั่งต่อไปนี้:

fd filename

สิ่งนี้จะค้นหาภายในไดเร็กทอรีการทำงานที่กำหนดไว้ล่วงหน้า รวมถึงไดเร็กทอรีย่อย หากต้องการค้นหาภายในไดเร็กทอรีที่ระบุ ให้ระบุหลังจากคำค้นหาของคุณ:

fd filename /path/to/search

การดำเนินการคำสั่งตามผลลัพธ์

เช่นเดียวกับ find fd มีฟังก์ชันที่ส่งผ่านไฟล์ที่พบไปยังคำสั่งอื่นเพื่อดำเนินการ ที่ find ใช้ find . -iname pattern -exec command , fd ใช้ -x ธง:

fd -e zip -x unzip

คำสั่งนี้จะส่งไฟล์ zip ทั้งหมดในไดเร็กทอรีไปยังคำสั่ง unzip คุณสามารถใช้สัญลักษณ์ต่อไปนี้ภายใน "วลี" ของคำสั่งดำเนินการเพื่อส่งข้อมูลในรูปแบบเฉพาะ

  • {} :ตัวยึดตำแหน่งจะถูกแทนที่ด้วยเส้นทางของผลการค้นหา (files/images/portrait.jpg )
  • {/} :ตัวยึดตำแหน่งที่จะถูกแทนที่ด้วยชื่อไฟล์ของผลลัพธ์เท่านั้น ซึ่งเป็นที่รู้จักโดยผู้สนใจรัก UNIX ว่าเป็นชื่อฐาน (portrait.jpg )
  • {//} :ตัวยึดตำแหน่งถูกแทนที่ด้วยไดเร็กทอรีหลักของรายการที่พบ (files/images )
  • {.} :ตัวยึดตำแหน่งแทนที่ด้วยพาธไปยังชื่อไฟล์โดยไม่มีนามสกุล (files/images/portrait )
  • {/.} :ตัวยึดตำแหน่งแทนที่ด้วยชื่อฐานของรายการที่พบโดยไม่มีส่วนขยาย (portrait )

ลองพิจารณาตัวอย่างต่อไปนี้ โดยใช้สัญลักษณ์ตัวแทนที่อ้างถึงข้างต้น 2 ตัว:

fd -e flac -x ffmpeg -i {} -c:a libopus {.}.opus

แฟล็ก fd ที่มีประโยชน์อื่นๆ

  • -e :ค้นหานามสกุลของไฟล์เท่านั้นโดยไม่มีจุดคั่น
  • -E pattern :ยกเว้นผลลัพธ์ที่ตรงกับรูปแบบต่อไปนี้
  • --changed-newer-than date|duration :กรองผลลัพธ์ตามเวลาตั้งแต่แก้ไขไฟล์ ซึ่งจะแสดงเฉพาะไฟล์ที่มีวันที่แก้ไขหลังวันที่ระบุเท่านั้น เวลาสามารถกำหนดระยะเวลาที่นับถอยหลังจากช่วงเวลาปัจจุบันได้ (10h , 1d , 35min ) หรือตั้งเวลาได้ ("YYYY-MM-DD HH:MM:SS" )
  • –change-older-than date|duration :ชอบ –change-newer แต่จะแสดงไฟล์ที่แก้ไขก่อนวันที่หรือระยะเวลาที่ระบุ ไม่ใช่หลังจาก
  • -t :แสดงเฉพาะไฟล์ในประเภทที่ระบุ (-tf สำหรับไฟล์, -td สำหรับไดเร็กทอรี, -tx สำหรับไฟล์เรียกทำงาน, -tl สำหรับ symlink, -te สำหรับไฟล์ว่าง)
  • -p :ค้นหาภายในชื่อพาธทั้งหมด ไม่ใช่แค่ชื่อไฟล์
  • -s :บังคับ case-sensitivity โดยค่าเริ่มต้น fd จะไม่สนใจตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เว้นแต่จะพิมพ์อักษรตัวพิมพ์ใหญ่ในรูปแบบการค้นหา
  • -H :แสดงไฟล์และไดเรกทอรีที่ซ่อนอยู่ภายในผลลัพธ์
  • -L :ตามลิงค์ไปยังไดเร็กทอรี symlink.

fd เป็นทางเลือกที่ดีสำหรับคำสั่ง find หากประสบการณ์ของคุณคือคำสั่ง "find" นั้นใช้งานยาก แสดงว่าคุณอาจใช้ fd ได้ดีกว่า ลองใช้และแจ้งให้เราทราบหากเป็นประโยชน์กับคุณ