Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ fd ค้นหาไฟล์เร็วขึ้นใน Linux และ macOS

วิธีใช้ fd ค้นหาไฟล์เร็วขึ้นใน Linux และ macOS

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 ค้นหาไฟล์เร็วขึ้นใน Linux และ macOS

คำสั่ง 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 ลองดูและแจ้งให้เรารู้ว่ามันมีประโยชน์ต่อคุณไหม