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:
- วิธีแตกไฟล์ Tar ไปยังไดเร็กทอรีเฉพาะหรือไดเร็กทอรีอื่นใน Linux
- 3 วิธีในการลบไฟล์ทั้งหมดในไดเร็กทอรียกเว้นไฟล์เดียวหรือไม่กี่ไฟล์ที่มีนามสกุล
- 10 เคล็ดลับที่เป็นประโยชน์สำหรับการเขียนสคริปต์ Bash ที่มีประสิทธิภาพใน Linux
- วิธีใช้ Awk และนิพจน์ทั่วไปเพื่อกรองข้อความหรือสตริงในไฟล์
หากคุณมีสิ่งที่จะแบ่งปันหรือคำถามที่จะถาม ใช้แบบฟอร์มความคิดเห็นด้านล่าง