คำสั่ง Linux FIND พร้อมตัวอย่าง
คุณรู้หรือไม่ว่าการติดตั้งใหม่ของLinux มีกี่ไฟล์ ? หากคุณใช้ PopOS! ตัวอย่าง การกระจาย Linux(Linux distribution)มีมากกว่า 31,000 ไฟล์ นั่นคือก่อนที่คุณจะเริ่มสร้างเอกสาร จัดเก็บเพลง ดาวน์โหลดไฟล์ PDF(PDFs)หรือจัดระเบียบรูปภาพ
ด้วยเหตุนี้ การค้นหาไฟล์หรือโฟลเดอร์ที่ถูกต้องในLinuxเมื่อคุณต้องการจึงกลายเป็นเรื่องท้าทาย ในบทความนี้ คุณจะได้เรียนรู้วิธีใช้ คำสั่ง Linux FINDและเราจะยกตัวอย่างทั้งหมดที่ทำได้
Linux FIND Command Syntax
วากยสัมพันธ์หมายถึงการรวมคำหรือคำสั่งเข้าด้วยกัน ประโยค(Just)ธรรมดาจะกลายเป็นเรื่องไร้สาระได้ด้วยการสับเปลี่ยนคำ คำสั่งอาจล้มเหลวได้หากไม่ได้ใช้ในไวยากรณ์ที่ถูกต้อง
ค้นหา [เส้นทาง] [เงื่อนไข] [การกระทำ](find [path] [conditions] [actions])
นี่คือสิ่งที่หมายถึง:
find – เริ่มต้นค้นหา(Find)ยูทิลิตี้ในLinux
เส้นทาง(path ) – จะดูที่ไหน
เงื่อนไข(conditions ) – อาร์กิวเมนต์ที่คุณต้องการนำไปใช้กับการค้นหา
การกระทำ(actions ) – สิ่งที่คุณต้องการจะทำอย่างไรกับผลลัพธ์
ตัวอย่างง่ายๆที่ใช้ทั้งสามมีลักษณะดังนี้:
หา . -name file-sample.rtf -print(find . -name file-sample.rtf -print)
ตามที่คุณเดา จะพบชื่อไฟล์ file-sample.rtf
เส้นทางจุด ( . ) บอกให้ค้นหาค้นหาในไดเร็กทอรีปัจจุบันและไดเร็กทอรีภายใน
เงื่อนไข-nameบอกให้ find รับไฟล์ที่มีชื่อเฉพาะนั้น
การ ดำเนินการ -printจะบอกให้ FIND แสดงผลบนหน้าจอ
จุดและ -print เป็นค่าเริ่มต้นสำหรับคำสั่ง find ดังนั้นมันจะยังคงทำแบบเดียวกันถ้าคุณไม่ใช้มัน ดังนั้นfind -name file-sample.rtfจะให้ผลลัพธ์แบบเดียวกัน
Linux ค้นหาในไดเรกทอรีอื่น(Linux FIND In Another Directory)
คุณสามารถค้นหาในไดเร็กทอรีอื่นที่ไม่ใช่ไดเร็กทอรีที่คุณอยู่เพียงแค่(Just) ใส่พาธ ไปยังไดเร็กทอรีหลังจากFIND หากคุณอยู่ที่รูทและรู้ว่าไฟล์นั้นอยู่ที่ไหนสักแห่งใน ไดเร็กทอรี home/userคุณจะใช้:
find home/user -name file-sample.rtf
ยังคงเป็นการค้นหาแบบเรียกซ้ำ ดังนั้นมันจะผ่านทุกไดเร็กทอรีภายใต้user
Linux FIND ค้นหาหลายไดเรกทอรี(Linux FIND Search Multiple Directories)
หากคุณต้องการค้นหาในไดเร็กทอรีหลายๆ ไดเร็กทอรีในคราวเดียว ให้ระบุไดเร็กทอรีไว้ในคำสั่ง โดยคั่นด้วยช่องว่าง
find /lib /var /bin -name file-sample.rtf
Linux FIND ไม่มีการเรียกซ้ำหรือจำกัดการเรียกซ้ำ(Linux FIND with No Recursion or Limiting Recursion)
หากคุณใช้ คำสั่ง FINDด้านบนที่ระดับรูท คำสั่งจะตรวจสอบทุกไดเร็กทอรีในระบบ ดังนั้น หากคุณต้องการใช้เฉพาะไดเร็กทอรีปัจจุบัน ให้ใช้ตัวเลือก-maxdepth ตัวเลขหลัง -maxdepth บอก Find ว่าต้องลึกแค่ไหนก่อนหยุด
การใช้-maxdepth 1หมายถึงไดเร็กทอรีนี้เท่านั้น
find -name file-sample.rtf -maxdepth 1
การใช้-maxdepth 2หรือจำนวนที่มากกว่าหมายถึงการไปหลายระดับที่ลึกกว่านั้น
ค้นหา -maxdepth 5 -name file-sample.rtf(find -maxdepth 5 -name file-sample.rtf)
Linux FIND Wildcard Example
คำ สั่ง FINDใช้เครื่องหมายดอกจัน ( * ) เป็นสัญลักษณ์แทน ใช้สำหรับส่วนใดส่วนหนึ่งของชื่อที่คุณไม่แน่ใจ สามารถใช้ได้มากกว่าหนึ่งครั้งในชื่อ หากไม่มีประเภทไฟล์เป็นส่วนหนึ่งของชื่อไฟล์ ผลลัพธ์จะรวมไดเร็กทอรีที่ตรงกันด้วย
find home/user -name file*sample*
Linux FIND ตามตัวอย่างประเภท(Linux FIND by Type Example)
หากต้องการค้นหาเฉพาะไฟล์หรือไดเร็กทอรี ให้ใช้อ็อพชัน -type และตัวอธิบายที่เหมาะสม มีบางส่วน แต่ไฟล์และไดเร็กทอรีเป็นไฟล์ทั่วไป:
f – ไฟล์
d – ไดเรกทอรี
b – บล็อกอุปกรณ์
ค – อุปกรณ์ตัวละคร
ล. – ลิงค์สัญลักษณ์
s – ซ็อกเก็ต
find home/user -name file*sample* -type d
Linux FIND Case Insensitive Example
ต่างจากWindowsตรงที่Linuxสนใจว่าตัวอักษรเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ดังนั้น หากคุณต้องการให้ค้นหาทั้งFile-Sample.rtfและ file-sample.rtf ให้ใช้ตัวเลือก-iname
find home/user -iname File-Sample.rtf
Linux FIND ตัวอย่างไฟล์หลายไฟล์(Linux FIND Several Files Example)
สมมติว่าคุณต้องการค้นหาไฟล์เวอร์ชัน .rtf และ .html สามารถทำได้ในคำสั่งเดียวโดยใช้ตัวดำเนินการ-o (หรือ) ในบาง distros คุณอาจต้องใส่ชื่อในวงเล็บเช่น( -name file-sample.rtf -o -name file-sample.html )
find home/user -name file-sample.rtf -o -name file-sample.html
Linux FIND ไฟล์ที่ไม่ตรงกับชื่อ(Linux FIND Files That Don’t Match a Name)
บางทีคุณอาจรู้ว่ามี ไฟล์เวอร์ชัน .htmlแต่ไม่ใช่ถ้ามีอย่างอื่น คุณสามารถกรอง เวอร์ชัน .htmlออกจากการค้นหาได้โดยใช้ตัว(.)เลือก-not
find home/user -name file-sample* -not -name *.html
Linux ค้นหาโดยไม่มีข้อผิดพลาด ผลลัพธ์(Linux FIND Without Error Results)
ในตัวอย่างการค้นหาโดยไม่มีการเรียกซ้ำ สังเกตว่ามันแสดงรายการทุกไดเร็กทอรีที่ไม่สามารถค้นหาได้และผลลัพธ์ที่ถูกต้อง ที่น่ารำคาญ หยุดไม่ให้แสดงไดเร็กทอรี " Permission denied" ทั้งหมด รวมเข้ากับคำสั่งเทอร์มินัล Linux(Linux terminal command) อื่น grep คุณยังสามารถใช้Find with grep เพื่อค้นหาไฟล์ที่มีคำเฉพาะใน(find files with specific words in them)นั้น
find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”
มาแบ่งกัน2>&1กัน
2 – หมายถึงstderrซึ่งสั้นสำหรับเอาต์พุตข้อผิดพลาดมาตรฐาน
1 – หมายถึงstdoutซึ่งย่อมาจากเอาต์พุตมาตรฐาน
> – หมายถึงการเปลี่ยนเส้นทางเอาท์พุตทางซ้ายของมันไปทางขวาของมัน
& – หมายถึง การรวมเข้าด้วยกัน.
ดังนั้น2>&1 จึง หมายถึงนำข้อผิดพลาดมาตรฐานและเปลี่ยนเส้นทางข้อผิดพลาด แล้วรวมเข้ากับเอาต์พุตมาตรฐานไว้ในเอาต์พุตเดียว
ทีนี้มาดูที่| grep -v “Permission denied” ”
| (เรียกว่าไพพ์) – บอกให้ลินุกซ์(Linux)ป้อนผลลัพธ์ของสิ่งที่อยู่ทางซ้ายของมันไปยังสิ่งที่อยู่ทางขวาของมัน มันถูกป้อนไปยังคำสั่ง grep
grep - เป็นยูทิลิตี้ค้นหาข้อความ
-v – บอกให้ grep ค้นหาสิ่งที่ไม่ตรงกับข้อความทางด้านซ้ายของ -v ในกรณีนี้ มันบอกให้ grep ค้นหาเฉพาะสิ่งใดก็ตามที่ไม่มีข้อความหรือสตริง " การ อนุญาต(Permission)ถูกปฏิเสธ" ดังนั้น grep จะแสดงเฉพาะผลลัพธ์ที่คุณต้องการและข้อผิดพลาดที่ไม่ตรงกับ "การอนุญาต(Permission)ถูกปฏิเสธ"
Linux FIND โดยตัวอย่างการอนุญาต(Linux FIND by Permissions Example)
ในการใช้งานให้ดี คุณต้องเรียนรู้การอนุญาตลินุก(learn Linux permissions)ซ์
ไฟล์ตัวอย่างทั้งหมดมีสิทธิ์ 664 ยกเว้นไฟล์ที่มีสิทธิ์ 775 ใช้ ตัวเลือก -permเพื่อค้นหา
find Documents/ -name file-sample* -type f -perm 775
Linux FIND โดยตัวอย่างขนาด(Linux FIND by Size Example)
การค้นหาไฟล์ตามขนาดนั้นสะดวกสำหรับการเติมไฟล์ขนาดใหญ่เหล่านั้นลงในฮาร์ดไดรฟ์ของคุณ ใช้ตัวเลือก -ขนาด ขนาดที่ต้องการ และส่วนต่อท้ายอย่างใดอย่างหนึ่งต่อไปนี้ หากไม่มีการใช้คำต่อท้าย -size ค่าเริ่มต้นเป็นb หากต้องการค้นหาไฟล์ที่เท่ากันและใหญ่กว่าขนาดที่กำหนด ให้ใส่เครื่องหมายบวก (+) ข้างหน้าขนาด
M – เมกะไบต์
G – กิกะไบต์
k – กิโลไบต์
b – บล็อก (512 ไบต์ – ค่าเริ่มต้น)
c – ไบต์
w - คำ (สองไบต์รวมกัน)
find -size +500k
Linux ค้นหาโดยเจ้าของ(Linux FIND by Owner)
มีสองวิธีในการค้นหาไฟล์โดยเจ้าของ หนึ่งใช้ชื่อผู้ใช้ของเจ้าของ และอีกอันคือโดยกลุ่มของผู้ใช้ หากต้องการค้นหาโดยใช้ชื่อผู้ใช้ ให้ใช้ ตัวเลือก -userตามด้วยชื่อผู้ใช้ หากต้องการค้นหาตามกลุ่มผู้ใช้ ให้ใช้-groupตามด้วยชื่อกลุ่ม..
find -user groupnameหรือfind -user username
Linux FIND Files โดย Last Modified Example(Linux FIND Files by Last Modified Example)
หากต้องการค้นหาไฟล์ที่แก้ไขหรือแก้ไขในจำนวน X วันที่ผ่านมา ให้ใช้-mtimeตามด้วยตัวเลข การใส่เครื่องหมายลบ ( – ) หน้าตัวเลขจะพบว่ามีการเปลี่ยนแปลงภายในหลายวันก่อนหน้านั้น เครื่องหมายบวก ( + ) หมายถึงภายในหลายวันก่อนหน้านั้น
find -name “file-sample*” -mtime +5 (greater than 5 days ago)
find -name “file-sample*” -mtime -5 (less than 5 days ago)
หากต้องการค้นหาโดยแก้ไขล่าสุดในหน่วยนาที ให้ใช้ตัวเลือก -mmin ตามด้วยจำนวนนาที ใช้เครื่องหมาย + และ – เหมือนด้านบน
find -name “file-sample*” -mmin -5
find -name “file-sample*” -mmin +5
Linux FIND Files โดย Last Accessed TIME Example(Linux FIND Files by Last Accessed TIme Example)
ตัวเลือกที่ใช้เพื่อค้นหาไฟล์ตามเวลาที่เปิดล่าสุดคือ-atimeสำหรับวัน และ-aminสำหรับนาที ตามด้วยจำนวนวันหรือนาทีเพื่อย้อนกลับและใช้เครื่องหมาย + และ – มากกว่าหรือน้อยกว่า
find -name “file-sample*” -atime -5
find -name “file-sample* -amin -5
รวม FIND กับคำสั่ง Linux อื่น ๆ(Combine FIND with Other Linux Commands)
มีตัวอย่างหนึ่งข้างต้นของการใช้ find กับคำสั่ง grep และคุณสามารถใช้กับคำสั่งอื่นๆ ได้ คุณจะเห็นว่าการใช้คำสั่ง find และคำสั่งอื่นๆ นั้นมีประสิทธิภาพมากและช่วยประหยัดเวลาได้มาก ลองนึกภาพว่า(Imagine)ต้องลบไฟล์บางประเภทออกเป็นจำนวนมาก แทนที่จะค้นหาใน file explorer เพียงแค่สร้างคำสั่งที่ถูกต้อง และทำเสร็จภายในไม่กี่วินาที คุณจะใช้คำสั่ง find อย่างไรในตอนนี้
Related posts
แปลงรูปภาพระหว่างรูปแบบผ่าน Command Line ใน Ubuntu
ทำไมคำสั่ง "น้อย" จึงดีกว่า "มากกว่า" ใน UNIX และ Linux
ใช้คำสั่ง 'dd' ของ Linux ด้วย GUI อย่างง่าย
ค้นหาและเปลี่ยนชื่อโฮสต์ของคุณใน Ubuntu
คำสั่ง Chown ใน Linux: วิธีใช้งาน
HDG อธิบาย : UNIX คืออะไร?
สร้าง Custom Live Linux Distro ด้วย Linux Live Kit
เคล็ดลับเทอร์มินัล: ใช้เทอร์มินัลเป็นนาฬิกาปลุก
7 วิธีในการ Zip และ Unzip ไฟล์ใน Linux
5 วิธีในการสำรองไฟล์อัตโนมัติใน Linux
สร้างเซิร์ฟเวอร์สตรีมมิ่งวิดีโอสดของคุณเองด้วย Linux
คู่มือ Ubuntu Linux สำหรับผู้เริ่มต้น
10 สุดยอดเครื่องบันทึกหน้าจอสำหรับ Linux
แอพ Linux ที่ดีที่สุด 10 อันดับแรกสำหรับผู้ใช้ Ubuntu
วิธีการติดตั้งเครื่องพิมพ์เกือบทุกเครื่องบน Ubuntu
วิธีอัปเกรดเป็น Ubuntu ล่าสุด
สิทธิ์ของไฟล์ Linux – Chmod 777 คืออะไรและใช้งานอย่างไร
แสดงและซ่อนไอคอนเดสก์ท็อปใน GNOME Linux
6 วิธีง่ายๆ ในการเพิ่มความเร็วการติดตั้ง Ubuntu ของคุณ
วิธีการติดตั้ง Linux Distro บน Chromebook ของคุณ