ค้นหาเว็บไซต์

10 ตัวอย่างการใช้งานจริงโดยใช้ Wildcards เพื่อจับคู่ชื่อไฟล์ใน Linux


ไวลด์การ์ด (หรือเรียกอีกอย่างว่าอักขระเมตา) คือสัญลักษณ์หรืออักขระพิเศษที่แสดงถึงอักขระอื่น คุณสามารถใช้กับคำสั่งใดก็ได้ เช่น คำสั่ง ls หรือ คำสั่ง rm เพื่อแสดงรายการหรือลบไฟล์ที่ตรงกับเกณฑ์ที่กำหนด

อ่านเพิ่มเติม: 10 ตัวอย่างที่เป็นประโยชน์เกี่ยวกับ Chaining Operators ใน Linux

ไวด์การ์ดเหล่านี้ถูกตีความโดยเชลล์ และผลลัพธ์จะถูกส่งกลับไปยังคำสั่งที่คุณรัน มีไวด์การ์ดหลักสามตัวใน Linux:

  • เครื่องหมายดอกจัน (*) – จับคู่อักขระใดๆ อย่างน้อย 1 รายการ โดยไม่รวมถึงอักขระใดๆ ด้วย
  • เครื่องหมายคำถาม (?) – แสดงถึงหรือจับคู่อักขระใดๆ ที่ปรากฏเพียงครั้งเดียว
  • อักขระวงเล็บ ([ ]) – จับคู่อักขระที่อยู่ในวงเล็บเหลี่ยม สามารถใช้อักขระประเภทต่างๆ ได้ (อักขระตัวอักษรและตัวเลข): ตัวเลข ตัวอักษร อักขระพิเศษอื่นๆ เป็นต้น

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

วิธีจับคู่ชื่อไฟล์โดยใช้ Wildcards ใน Linux

เพื่อวัตถุประสงค์ของบทความนี้ เราจะใช้ไฟล์ต่อไปนี้เพื่อสาธิตแต่ละตัวอย่าง

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

1. คำสั่งนี้จะจับคู่ไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วย l (ซึ่งเป็นคำนำหน้า) และลงท้ายด้วยอักขระใดๆ อย่างน้อยหนึ่งรายการ

ls -l l*	

2. ตัวอย่างนี้แสดงการใช้ * อีกครั้งเพื่อคัดลอกชื่อไฟล์ทั้งหมดที่นำหน้าด้วย users-0 และลงท้ายด้วยอักขระใดๆ อย่างน้อยหนึ่งรายการ

mkdir -p users-info
ls users-0*
mv -v users-0* users-info/	# Option -v flag enables verbose output

3. คำสั่งต่อไปนี้จะจับคู่ไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วย l ตามด้วยอักขระเดี่ยวใดๆ และลงท้ายด้วย st.sh (ซึ่งเป็นส่วนต่อท้าย ).

ls l?st.sh	

4. คำสั่งด้านล่างจะจับคู่ไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วย l ตามด้วยอักขระใดๆ ในวงเล็บเหลี่ยม แต่ลงท้ายด้วย st.sh .

ls l[abdcio]st.sh 

วิธีรวม Wildcards เพื่อจับคู่ชื่อไฟล์ใน Linux

คุณสามารถรวมไวด์การ์ดเพื่อสร้างเกณฑ์การจับคู่ชื่อไฟล์ที่ซับซ้อนได้ดังที่อธิบายไว้ในตัวอย่างต่อไปนี้

5. คำสั่งนี้จะจับคู่ชื่อไฟล์ทั้งหมดที่นำหน้าด้วยอักขระสองตัวใดๆ ตามด้วย st แต่ลงท้ายด้วยอักขระใดๆ อย่างน้อย 1 ตัว

ls
ls ??st*

6. ตัวอย่างนี้จับคู่ชื่อไฟล์ที่ขึ้นต้นด้วยอักขระใดๆ เหล่านี้ [clst] และลงท้ายด้วยอักขระใดๆ อย่างน้อยหนึ่งรายการ

ls
ls [clst]*

7. ในตัวอย่างนี้ เฉพาะชื่อไฟล์ที่ขึ้นต้นด้วยอักขระใดๆ เหล่านี้ [clst] ตามด้วย [io] ตัวใดตัวหนึ่ง จากนั้นตามด้วยอักขระตัวใดตัวหนึ่ง อักขระ ตามด้วย t และสุดท้าย อักขระใด ๆ ที่ปรากฏอย่างน้อยหนึ่งรายการจะถูกแสดงรายการ

ls
ls [clst][io]?t*

8. ในที่นี้ ชื่อไฟล์ที่นำหน้าด้วยอักขระใดๆ อย่างน้อย 1 รายการ ตามด้วยตัวอักษร tar และลงท้ายด้วยอักขระใดๆ อย่างน้อย 1 รายการจะถูกลบออก

ls
rm *tar*
ls

วิธีจับคู่ชุดอักขระใน Linux

9. ตอนนี้เรามาดูวิธีการระบุชุดอักขระกัน พิจารณาชื่อไฟล์ด้านล่างที่มีข้อมูลผู้ใช้ระบบ

ls

users-111.list  users-1AA.list  users-22A.list  users-2aB.txt   users-2ba.txt
users-111.txt   users-1AA.txt   users-22A.txt   users-2AB.txt   users-2bA.txt
users-11A.txt   users-1AB.list  users-2aA.txt   users-2ba.list
users-12A.txt   users-1AB.txt   users-2AB.list  users-2bA.list

คำสั่งนี้จะจับคู่ไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วย users-i ตามด้วยตัวเลข ตัวอักษรตัวพิมพ์เล็กหรือตัวเลข ตามด้วยตัวเลขและลงท้ายด้วยอักขระใดๆ อย่างน้อยหนึ่งรายการ

ls users-[0-9][a-z0-9][0-9]*

คำสั่งถัดไปจะจับคู่ชื่อไฟล์ที่ขึ้นต้นด้วย users-i ตามด้วยตัวเลข ตัวอักษรตัวพิมพ์เล็กหรือใหญ่หรือตัวเลข จากนั้นจึงตามด้วยตัวเลขและลงท้ายด้วยอักขระใดๆ อย่างน้อยหนึ่งรายการ

ls users-[0-9][a-zA-Z0-9][0-9]*

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

ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

วิธีลบล้างชุดอักขระใน Linux

10. คุณสามารถลบล้างชุดอักขระได้โดยใช้สัญลักษณ์ ! คำสั่งต่อไปนี้แสดงรายการชื่อไฟล์ทั้งหมดที่ขึ้นต้นด้วย users-i ตามด้วยตัวเลข อักขระการตั้งชื่อไฟล์ที่ถูกต้องใดๆ นอกเหนือจากตัวเลข ตามด้วยอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ และลงท้ายด้วยเหตุการณ์ใด ๆ ที่เกิดขึ้นตั้งแต่หนึ่งรายการขึ้นไป อักขระ.

ls users-[0-9][!0-9][a-zA-Z]*

นั่นคือทั้งหมดที่สำหรับตอนนี้! หากคุณได้ลองใช้ตัวอย่างข้างต้นแล้ว ตอนนี้คุณควรมีความเข้าใจที่ดีเกี่ยวกับวิธีการทำงานของไวด์การ์ดเพื่อจับคู่ชื่อไฟล์ใน Linux

คุณอาจต้องการอ่านบทความต่อไปนี้ซึ่งแสดงตัวอย่างการใช้ไวด์การ์ดใน Linux:

  1. วิธีแตกไฟล์ Tar ไปยังไดเร็กทอรีเฉพาะหรือไดเร็กทอรีอื่นใน Linux
  2. 3 วิธีในการลบไฟล์ทั้งหมดในไดเร็กทอรียกเว้นไฟล์เดียวหรือไม่กี่ไฟล์ที่มีนามสกุล
  3. 10 เคล็ดลับที่เป็นประโยชน์สำหรับการเขียนสคริปต์ Bash ที่มีประสิทธิภาพใน Linux
  4. วิธีใช้ Awk และนิพจน์ทั่วไปเพื่อกรองข้อความหรือสตริงในไฟล์

หากคุณมีสิ่งที่จะแบ่งปันหรือคำถามที่จะถาม ใช้แบบฟอร์มความคิดเห็นด้านล่าง