คุณรู้หรือไม่ว่ามีไฟล์กี่ไฟล์ในการติดตั้ง Linux ใหม่? หากคุณใช้ PopOS! ตัวอย่างการกระจาย Linux มีมากกว่า 31,000 ไฟล์ นั่นคือก่อนที่คุณจะเริ่มสร้างเอกสาร จัดเก็บเพลง ดาวน์โหลดไฟล์ PDF หรือจัดระเบียบรูปภาพ
ด้วยเหตุนี้ การค้นหาไฟล์หรือโฟลเดอร์ที่ถูกต้องใน Linux เมื่อคุณต้องการจึงกลายเป็นเรื่องท้าทาย ในบทความนี้ คุณจะได้เรียนรู้วิธีใช้คำสั่ง Linux FIND และเราจะยกตัวอย่างทั้งหมดที่ทำได้
Linux FIND Command Syntax
วากยสัมพันธ์หมายถึงการรวมคำหรือคำสั่งเข้าด้วยกัน ประโยคธรรมดาจะกลายเป็นเรื่องไร้สาระได้ด้วยการสับเปลี่ยนคำ คำสั่งอาจล้มเหลวได้หากไม่ได้ใช้ในไวยากรณ์ที่ถูกต้อง
ค้นหา [เส้นทาง] [เงื่อนไข] [การกระทำ]
ความหมายคือ
หา – เริ่มต้นค้นหายูทิลิตี้ใน Linux
เส้นทาง – จะดูได้ที่ไหน
เงื่อนไข – ข้อโต้แย้งที่คุณต้องการนำไปใช้กับการค้นหา
การกระทำ – สิ่งที่คุณต้องการจะทำอย่างไรกับผลลัพธ์
ตัวอย่างง่ายๆ โดยใช้ทั้งสามลักษณะดังนี้:
หา -name file-sample.rtf -print
ตามที่คุณเดา จะพบชื่อไฟล์ file-sample.rtf .
ช่วงเวลา ( ) เส้นทางบอกให้ find มองหาในไดเร็กทอรีปัจจุบันและไดเร็กทอรีใด ๆ ที่อยู่ภายใน
-ชื่อ สภาพ บอกให้หาไฟล์ที่มีชื่อเฉพาะนั้นมา
-print การดำเนินการบอกให้ FIND แสดงผลบนหน้าจอ
จุดและ -print เป็นค่าเริ่มต้นสำหรับคำสั่ง find ดังนั้นมันจะยังคงทำสิ่งเดียวกันถ้าคุณไม่ใช้มัน ดังนั้น find -name file-sample.rtf จะให้ผลลัพธ์แบบเดียวกัน
Linux ค้นหาในไดเร็กทอรีอื่น
คุณสามารถค้นหาในไดเร็กทอรีอื่นที่ไม่ใช่ไดเร็กทอรีที่คุณอยู่ เพียงแค่ใส่พาธไปยังไดเร็กทอรีหลังจาก FIND หากคุณอยู่ที่รูทและรู้ว่าไฟล์นั้นอยู่ที่ไหนสักแห่งใน home/user ไดเรกทอรีที่คุณจะใช้:
ค้นหา home/user -name file-sample.rtf
ยังคงเป็นการค้นหาแบบเรียกซ้ำ ดังนั้นจะผ่านทุกไดเร็กทอรีภายใต้ ผู้ใช้ .
Linux FIND ค้นหาหลายไดเรกทอรี
หากคุณต้องการค้นหาในไดเร็กทอรีหลายๆ ไดเร็กทอรีในคราวเดียว ให้ระบุไดเร็กทอรีในคำสั่งโดยคั่นด้วยการเว้นวรรค
ค้นหา /lib /var /bin -name file-sample.rtf
Linux FIND ไม่มีการเรียกซ้ำหรือจำกัดการเรียกซ้ำ
หากคุณใช้คำสั่ง FIND ด้านบนที่ระดับรูท คำสั่งจะตรวจสอบทุกไดเร็กทอรีในระบบ ดังนั้นหากคุณต้องการยึดติดกับไดเร็กทอรีปัจจุบัน ให้ใช้ -maxdepth ตัวเลือก. ตัวเลขหลัง -maxdepth บอก Find ว่าต้องลึกแค่ไหนก่อนหยุด
ใช้ -maxdepth 1 หมายถึงไดเร็กทอรีนี้เท่านั้น
find -name file-sample.rtf -maxdepth 1
ใช้ -maxdepth 2 หรือมากกว่านั้นหมายถึงการก้าวไปสู่ระดับที่ลึกกว่านั้นหลายระดับ
find -maxdepth 5 -name file-sample.rtf
Linux ค้นหาตัวอย่างสัญลักษณ์แทน
คำสั่ง FIND ใช้เครื่องหมายดอกจัน (* ) เป็นสัญลักษณ์แทน ใช้สำหรับส่วนใดส่วนหนึ่งของชื่อที่คุณไม่แน่ใจ สามารถใช้ได้มากกว่าหนึ่งครั้งในชื่อ หากไม่มีประเภทไฟล์เป็นส่วนหนึ่งของชื่อไฟล์ ผลลัพธ์จะรวมไดเร็กทอรีที่ตรงกันด้วย
ค้นหาไฟล์ชื่อบ้าน/ชื่อผู้ใช้*ตัวอย่าง*
Linux FIND ตามตัวอย่างประเภท
หากต้องการค้นหาเฉพาะไฟล์หรือไดเร็กทอรี ให้ใช้อ็อพชัน -type และตัวอธิบายที่เหมาะสม มีบางส่วน แต่ไฟล์และไดเร็กทอรีเป็นไฟล์ทั่วไป:
f – ไฟล์
d – ไดเรกทอรี
b – บล็อคอุปกรณ์
ค – อุปกรณ์ตัวละคร
l – ลิงค์สัญลักษณ์
s – ซ็อกเก็ต
ค้นหา home/user -name file*sample* -type d
Linux FIND ตัวอย่างที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ต่างจาก Windows ตรงที่ Linux สนใจว่าตัวอักษรเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ดังนั้น หากคุณต้องการให้ค้นหาทั้ง File-Sample.rtf และ file-sample.rtf ให้ใช้ -iname ตัวเลือก
ค้นหาบ้าน/ผู้ใช้ -iname File-Sample.rtf
Linux ค้นหาตัวอย่างไฟล์หลายไฟล์
สมมติว่าคุณต้องการค้นหาไฟล์เวอร์ชัน .rtf และ .html ที่สามารถทำได้ในคำสั่งเดียวโดยใช้ -o (หรือ) ตัวดำเนินการ ในบาง distros คุณอาจต้องใส่ชื่อในวงเล็บ เช่น ( -name file-sample.rtf -o -name file-sample.html ) .
ค้นหา home/user -name file-sample.rtf -o -name file-sample.html
Linux ค้นหาไฟล์ที่ไม่ตรงกับชื่อ
บางทีคุณอาจรู้ว่ามีไฟล์ในเวอร์ชัน .html แต่ไม่ใช่ถ้ามีอย่างอื่น คุณสามารถกรองเวอร์ชัน .html ออกจากการค้นหาได้โดยใช้ -not ตัวเลือก
ค้นหา home/user -name file-sample* -not -name *.html
Linux FIND โดยไม่มีผลลัพธ์ข้อผิดพลาด
ในตัวอย่างการค้นหาโดยไม่มีการเรียกซ้ำ สังเกตว่ามันแสดงรายการทุกไดเร็กทอรีที่ไม่สามารถค้นหาได้และผลลัพธ์ที่ถูกต้อง มันน่ารำคาญ มาหยุดไม่ให้แสดงไดเร็กทอรี "การอนุญาตที่ถูกปฏิเสธ" ทั้งหมด รวมเข้ากับคำสั่งเทอร์มินัล Linux อื่น grep คุณยังใช้ Find with grep เพื่อค้นหาไฟล์ที่มีคำเฉพาะเจาะจงได้อีกด้วย
find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “การอนุญาตถูกปฏิเสธ”
มาพังกัน 2>&1 .
2 – หมายถึง stderr ซึ่งสั้นสำหรับเอาต์พุตข้อผิดพลาดมาตรฐาน
1 – หมายถึง stdout ซึ่งสั้นสำหรับเอาต์พุตมาตรฐาน
> – หมายถึงการเปลี่ยนเส้นทางเอาท์พุตทางซ้ายของมันไปยังทางขวาของมัน
& – หมายถึง การรวมเข้าด้วยกัน
ดังนั้น 2>&1 หมายถึงนำข้อผิดพลาดมาตรฐานและเปลี่ยนเส้นทาง จากนั้นรวมเข้ากับเอาต์พุตมาตรฐานไว้ในเอาต์พุตเดียว
ทีนี้มาดูที่ | grep -v “การอนุญาตถูกปฏิเสธ” .
| (เรียกว่าไพพ์) – บอกให้ลินุกซ์ป้อนผลลัพธ์ของสิ่งที่อยู่ทางซ้ายของมันไปยังสิ่งที่อยู่ทางขวาของมัน กำลังป้อนคำสั่ง grep
grep – เป็นยูทิลิตี้ค้นหาข้อความ
-v - บอกให้ grep ค้นหาอะไรก็ได้ที่ไม่ตรงกับข้อความทางด้านซ้ายของ -v ในกรณีนี้ มันบอกให้ grep ค้นหาเฉพาะสิ่งใดก็ตามที่ไม่มีข้อความหรือสตริง "การอนุญาตถูกปฏิเสธ" ดังนั้น grep จะแสดงเฉพาะผลลัพธ์ที่คุณต้องการและข้อผิดพลาดที่ไม่ตรงกับ "การอนุญาตถูกปฏิเสธ"
Linux FIND โดยตัวอย่างการอนุญาต
ในการใช้งานให้ดี คุณต้องเรียนรู้สิทธิ์ของ Linux
ไฟล์ตัวอย่างทั้งหมดมีสิทธิ์ 664 ยกเว้นไฟล์ที่มีสิทธิ์ 775 ใช้ -perm ตัวเลือกเพื่อค้นหา
ค้นหาเอกสาร/ -name file-sample* -type f -perm 775
Linux FIND โดยตัวอย่างขนาด
การค้นหาไฟล์ตามขนาดนั้นสะดวกสำหรับการเติมไฟล์ขนาดใหญ่เหล่านั้นลงในฮาร์ดไดรฟ์ของคุณ ใช้ตัวเลือก -ขนาด ขนาดที่ต้องการ และส่วนต่อท้ายอย่างใดอย่างหนึ่งต่อไปนี้ หากไม่มีการใช้คำต่อท้าย -size ค่าเริ่มต้นเป็น b . หากต้องการค้นหาไฟล์ที่เท่ากันและใหญ่กว่าขนาดที่กำหนด ให้ใส่เครื่องหมายบวก (+) ข้างหน้าขนาด
M – เมกะไบต์
G – กิกะไบต์
k – กิโลไบต์
b – บล็อก (512 ไบต์ – ค่าเริ่มต้น)
c – ไบต์
w – คำ (สองไบต์รวมกัน)
ค้นหา -ขนาด +500k
Linux ค้นหาโดยเจ้าของ
มีสองวิธีในการค้นหาไฟล์โดยเจ้าของ หนึ่งใช้ชื่อผู้ใช้ของเจ้าของ และอีกอันหนึ่งคือโดยกลุ่มของผู้ใช้ หากต้องการค้นหาด้วยชื่อผู้ใช้ ให้ใช้ -user ตัวเลือกตามด้วยชื่อผู้ใช้ หากต้องการค้นหาตามกลุ่มผู้ใช้ ให้ใช้ -group ตามด้วยชื่อกลุ่ม..
ค้นหา -user groupname หรือ ค้นหา -user username
Linux FIND Files โดย Last Modified Example
หากต้องการค้นหาไฟล์ที่แก้ไขหรือแก้ไขในจำนวน X วันที่ผ่านมา ให้ใช้ -mtime ตามด้วยตัวเลข ใส่เครื่องหมายลบ (– ) ข้างหน้าเลขจะพบอะไรเปลี่ยนแปลงภายในไม่กี่วันก่อนนี้ เครื่องหมายบวก (+ ) หมายถึง ภายในระยะเวลาหลายวันก่อนนี้
find -name “file-sample*” -mtime +5 (มากกว่า 5 วันที่ผ่านมา)
find -name “file-sample*” -mtime -5 (น้อยกว่า 5 วันที่ผ่านมา)
หากต้องการค้นหาโดยแก้ไขล่าสุดในหน่วยนาที ให้ใช้ตัวเลือก -mmin ตามด้วยจำนวนนาที ใช้เครื่องหมาย + และ – เหมือนด้านบน
find -name “file-sample*” -mmin -5
find -name “file-sample*” -mmin +5
Linux FIND Files โดยตัวอย่าง TIME ที่เข้าถึงล่าสุด
ตัวเลือกที่ใช้ค้นหาไฟล์ตามเวลาที่เปิดล่าสุดคือ -atime สำหรับวันและ -อามิน เป็นเวลาหลายนาที ตามด้วยจำนวนวันหรือนาทีเพื่อย้อนกลับและใช้เครื่องหมาย + และ – มากกว่าหรือน้อยกว่า
ค้นหา -name “ไฟล์-ตัวอย่าง*” -atime -5
find -name “file-sample* -amin -5
รวม FIND เข้ากับคำสั่ง Linux อื่นๆ
มีตัวอย่างหนึ่งข้างต้นของการใช้ find กับคำสั่ง grep และคุณสามารถใช้กับคำสั่งอื่นๆ ได้อีกมากมาย คุณจะเห็นว่าการใช้คำสั่ง find และคำสั่งอื่นๆ นั้นมีประสิทธิภาพมากและช่วยประหยัดเวลาได้มาก ลองนึกภาพว่าต้องลบไฟล์บางประเภทออกเป็นจำนวนมาก แทนที่จะค้นหาใน file explorer เพียงแค่สร้างคำสั่งที่ถูกต้อง และทำเสร็จภายในไม่กี่วินาที คุณจะใช้คำสั่ง find อย่างไรในตอนนี้