คำสั่ง Linux FIND พร้อมตัวอย่าง


คุณรู้หรือไม่ว่ามีไฟล์จำนวนเท่าใดในการติดตั้ง Linux ใหม่? หากคุณใช้ PopOS! การกระจายลินุกซ์ เป็นตัวอย่าง มีมากกว่า 31,000 ไฟล์ นั่นคือก่อนที่คุณจะเริ่มสร้างเอกสาร จัดเก็บเพลง ดาวน์โหลด PDF หรือจัดระเบียบรูปภาพ

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

ไวยากรณ์คำสั่ง Linux FIND

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

ค้นหา [เส้นทาง] [เงื่อนไข] [การกระทำ]

ความหมายคือ:

ค้นหา – เริ่มต้นยูทิลิตี้ค้นหาใน Linux

เส้นทาง – ตำแหน่งที่จะดู

เงื่อนไข – อาร์กิวเมนต์ที่คุณต้องการใช้กับการค้นหา

การกระทำ – สิ่งที่คุณต้องการทำกับผลลัพธ์

ตัวอย่างง่ายๆ ที่ใช้ทั้งสามดูเหมือนว่า:

ค้นหา -ชื่อไฟล์-sample.rtf -พิมพ์

ตามที่คุณคาดเดา สิ่งนี้จะค้นหาชื่อไฟล์ file-sample.rtf

เส้นทางจุด (. ) บอกให้ find ค้นหาในไดเร็กทอรีปัจจุบันและไดเร็กทอรีใด ๆ ที่อยู่ภายใน

-name เงื่อนไข บอกให้ find รับไฟล์ที่มีชื่อเฉพาะนั้น

การดำเนินการ -print บอกให้ FIND แสดงผลลัพธ์บนหน้าจอ

จุดและ -print เป็นค่าเริ่มต้นสำหรับคำสั่ง find ดังนั้นมันจะยังคงทำสิ่งเดียวกันหากคุณไม่ใช้มัน ดังนั้น find -name file-sample.rtf จะให้ผลลัพธ์เดียวกัน

Linux ค้นหาในไดเรกทอรีอื่น

คุณสามารถค้นหาในไดเร็กทอรีที่แตกต่างจากไดเร็กทอรีที่คุณอยู่ เพียงใส่เส้นทางไปยังไดเร็กทอรีหลัง FIND หากคุณอยู่ที่ระดับรูทและรู้ว่าไฟล์นั้นอยู่ในไดเร็กทอรี home/user คุณจะใช้:

ค้นหาบ้าน/ผู้ใช้ -name file-sample.rtf

ยังคงเป็นการค้นหาแบบเรียกซ้ำ ดังนั้นจะผ่านทุกไดเรกทอรีภายใต้ ผู้ใช้ .

Linux ค้นหาหลายไดเรกทอรี

หากคุณต้องการค้นหาหลายไดเรกทอรีพร้อมกัน เพียงแสดงรายการไว้ในคำสั่งโดยคั่นด้วยช่องว่าง

ค้นหา /lib /var /bin -name file-sample.rtf

Linux FIND ที่ไม่มีการเรียกซ้ำหรือจำกัดการเรียกซ้ำ

หากคุณใช้คำสั่ง FIND ด้านบนที่ระดับรูท คำสั่งจะตรวจดูทุกไดเร็กทอรีในระบบ ดังนั้น หากคุณต้องการใช้เฉพาะไดเร็กทอรีปัจจุบัน ให้ใช้ตัวเลือก -maxdeep ตัวเลขหลัง -maxdeep บอกหาว่าจะไปลึกแค่ไหนก่อนหยุด

การใช้ -maxledge 1 หมายถึงเพียงไดเรกทอรีนี้

ค้นหา -name file-sample.rtf -maxdeep 1

การใช้ -maxdeep 2 หรือตัวเลขที่มากกว่าหมายถึงการไปลึกลงไปหลายระดับ

ค้นหา -maxdeep 5 -name file-sample.rtf

Linux FIND ตัวอย่างไวด์การ์ด

คำสั่ง FIND ใช้เครื่องหมายดอกจัน (* ) เป็นไวด์การ์ด ใช้กับส่วนใดส่วนหนึ่งของชื่อที่คุณไม่แน่ใจ สามารถใช้ได้มากกว่าหนึ่งครั้งในชื่อ หากไม่มีประเภทไฟล์เป็นส่วนหนึ่งของชื่อไฟล์ ผลลัพธ์ก็จะรวมไดเรกทอรีที่ตรงกันด้วย

ค้นหาบ้าน/ผู้ใช้ -name file*sample*

Linux ค้นหาตามประเภทตัวอย่าง

หากต้องการค้นหาเฉพาะไฟล์หรือไดเร็กทอรี ให้ใช้ตัวเลือก -type และคำอธิบายที่เหมาะสม มีบางส่วน แต่ไฟล์และไดเร็กทอรีเป็นเรื่องธรรมดาที่สุด:

ฉ – ไฟล์

d – ไดเรกทอรี

b – บล็อกอุปกรณ์

ค – อุปกรณ์อักขระ

l – ลิงก์สัญลักษณ์

s – ซ็อกเก็ต

ค้นหาบ้าน/ผู้ใช้ -name file*sample* -type d

Linux FIND ตัวอย่างที่ไม่คำนึงถึงตัวพิมพ์

ไม่เหมือนกับ Windows ตรงที่ Linux ให้ความสำคัญกับว่าตัวอักษรเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ดังนั้นหากคุณต้องการให้ค้นหาทั้ง File-Sample.rtf และ file-sample.rtf ให้ใช้ตัวเลือก -iname

ค้นหาบ้าน/ผู้ใช้ -iname File-Sample.rtf

Linux ค้นหาไฟล์หลายไฟล์ตัวอย่าง

สมมติว่าคุณต้องการค้นหาไฟล์เวอร์ชัน .rtf และ .html ซึ่งสามารถทำได้ในคำสั่งเดียวโดยใช้ตัวดำเนินการ -o (หรือ) ในดิสโทรบางตัว คุณอาจต้องใส่ชื่อไว้ในวงเล็บ เช่น ( -name file-sample.rtf -o -name file-sample.html ) .

ค้นหาบ้าน/ผู้ใช้ -name file-sample.rtf -o -name file-sample.html

Linux ค้นหาไฟล์ที่ไม่ตรงกับชื่อ

บางทีคุณอาจรู้ว่ามีไฟล์เวอร์ชัน .html แต่จะไม่ทราบหากมีไฟล์อื่นอยู่ด้วย คุณสามารถกรองเวอร์ชัน .html ออกจากการค้นหาได้โดยใช้ตัวเลือก -ไม่ใช่

ค้นหาบ้าน/ผู้ใช้ -ชื่อไฟล์-ตัวอย่าง* -ไม่ใช่ -ชื่อ *.html

Linux FIND โดยไม่มีผลลัพธ์ข้อผิดพลาด

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

ค้นหา -maxdeep 5 -name file-sample.rtf 2>&1 | grep -v “การอนุญาตถูกปฏิเสธ”

มาดูรายละเอียด 2>&1 กันดีกว่า

2 – หมายถึง stderrซึ่งย่อมาจากเอาต์พุตข้อผิดพลาดมาตรฐาน

1 – หมายถึง stdoutซึ่งย่อมาจากเอาต์พุตมาตรฐาน

> – หมายถึงการเปลี่ยนเส้นทางเอาต์พุตใดก็ตามที่อยู่ทางด้านซ้ายไปยังสิ่งใดก็ตามที่อยู่ทางด้านขวาของมัน

& – หมายถึง ประกอบเข้าด้วยกัน

ดังนั้น 2>&1 หมายถึงนำข้อผิดพลาดมาตรฐานและเปลี่ยนเส้นทาง จากนั้นรวมข้อผิดพลาดเหล่านั้นเข้ากับเอาต์พุตมาตรฐานเป็นเอาต์พุตเดียว

ตอนนี้มาดูที่ | grep -v “การอนุญาตถูกปฏิเสธ” .

| (เรียกว่าไปป์) – บอกให้ Linux ป้อนผลลัพธ์ของสิ่งใดก็ตามที่อยู่ทางซ้ายไปยังสิ่งใดก็ตามที่อยู่ทางขวา กำลังป้อนคำสั่ง grep

grep – เป็นโปรแกรมค้นหาข้อความ

-v – บอกให้ grep ค้นหาสิ่งใดก็ตามที่ไม่ตรงกับข้อความทางด้านซ้ายของ -v ในกรณีนี้ เป็นการบอก grep ให้ค้นหาเฉพาะสิ่งใดก็ตามที่ไม่มีข้อความหรือสตริง “Permission ถูกปฏิเสธ” ดังนั้น grep จะแสดงเฉพาะผลลัพธ์ที่คุณต้องการและข้อผิดพลาดใดๆ ที่ไม่ตรงกับ “Permission rejected”

Linux FIND ตามตัวอย่างสิทธิ์

.

หากต้องการใช้สิ่งนี้ให้ดี คุณต้อง เรียนรู้สิทธิ์ Linux

ไฟล์ตัวอย่างทั้งหมดมีสิทธิ์ 664 ยกเว้นไฟล์ที่มีสิทธิ์ 775 ใช้ตัวเลือก -perm เพื่อค้นหา

ค้นหาเอกสาร/ -name file-sample* -type f -perm 775

Linux ค้นหาตามตัวอย่างขนาด

การค้นหาไฟล์ตามขนาดมีประโยชน์ในการทำให้ไฟล์ขนาดใหญ่มาเต็มฮาร์ดไดรฟ์ของคุณ ใช้ตัวเลือก -size ขนาดที่ต้องการ และส่วนต่อท้ายอย่างใดอย่างหนึ่งต่อไปนี้ หากไม่มีการใช้ส่วนต่อท้าย -size จะมีค่าเริ่มต้นเป็น b หากต้องการค้นหาไฟล์ที่เท่ากับและใหญ่กว่าขนาดที่กำหนด ให้ใส่เครื่องหมายบวก (+) ข้างหน้าขนาดดังกล่าว

M – เมกะไบต์

G – กิกะไบต์

k – กิโลไบต์

b – บล็อก (512 ไบต์ – ค่าเริ่มต้น)

ค – ไบต์

w – คำ (สองไบต์รวมกัน)

ค้นหา -ขนาด +500k

Linux ค้นหาโดยเจ้าของ

มีสองวิธีในการค้นหาไฟล์ตามเจ้าของ รายการหนึ่งเป็นไปตามชื่อผู้ใช้ของเจ้าของ และอีกรายการเป็นไปตามกลุ่มของผู้ใช้ หากต้องการค้นหาด้วยชื่อผู้ใช้ ให้ใช้ตัวเลือก -ผู้ใช้ ตามด้วยชื่อผู้ใช้ หากต้องการค้นหาตามกลุ่มผู้ใช้ ให้ใช้ -group ตามด้วยชื่อกลุ่ม..

ค้นหา -ชื่อกลุ่มผู้ใช้ หรือ ค้นหา -ชื่อผู้ใช้

Linux ค้นหาไฟล์ตามตัวอย่างที่แก้ไขล่าสุด

หากต้องการค้นหาไฟล์ที่ถูกแก้ไขหรือแก้ไขในช่วง X จำนวนวันที่ผ่านมา ให้ใช้ -mtime ตามด้วยตัวเลข การใส่เครื่องหมายลบ ( ) หน้าตัวเลขจะพบสิ่งที่เปลี่ยนแปลงไปภายในไม่กี่วันก่อนหน้านั้น เครื่องหมายบวก (+ ) หมายถึงภายในหลายวันก่อนหน้านั้น

ค้นหา -name “file-sample*” -mtime +5 (มากกว่า 5 วันที่ผ่านมา)

ค้นหา -name “ไฟล์ตัวอย่าง*” -mtime -5 (น้อยกว่า 5 วันที่ผ่านมา)

หากต้องการค้นหาโดยการแก้ไขล่าสุดในหน่วยนาที ให้ใช้ตัวเลือก -mmin ตามด้วยจำนวนนาที ใช้เครื่องหมาย + และ – เหมือนด้านบน

ค้นหา -ชื่อ “ตัวอย่างไฟล์*” -mmin -5

ค้นหา -name “ไฟล์ตัวอย่าง*” -mmin +5

Linux ค้นหาไฟล์ตามตัวอย่าง TIme ที่เข้าถึงล่าสุด

.

ตัวเลือกที่ใช้ในการค้นหาไฟล์ตามเวลาที่ถูกเปิดครั้งล่าสุดคือ -atime สำหรับวัน และ -amin สำหรับนาที ตามด้วยจำนวนวันหรือนาทีเพื่อย้อนกลับและใช้เครื่องหมาย + และ – มากกว่าและน้อยกว่า

ค้นหา -name “ไฟล์ตัวอย่าง*” -atime -5

ค้นหา -name “ไฟล์ตัวอย่าง* -amin -5

รวม FIND เข้ากับคำสั่ง Linux อื่นๆ

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

.

กระทู้ที่เกี่ยวข้อง:


18.01.2022