ฉันจะปฏิเสธการแสดงออกของ zsh globbing อย่างถูกต้องได้อย่างไร


18

ฉันต้องการแสดงรายการไฟล์ทั้งหมด แต่ที่ลงท้ายด้วย owp: ดังนั้นฉันได้ลอง:

  ls -l *.(^owp)
  zsh: unknown sort specifier
  ls -l *(^owp) 
  zsh: unknown sort specifier
  ls -l *[^o][^w][^p] # does not work either, missing some files

ไม่มีใครทำงาน ฉันจะทำอย่างไรในวิธีที่ถูกต้อง? . zshrc ของฉันมี "set extendedglob"

คำตอบ:


27

ลองอย่างใดอย่างหนึ่ง:

ls -l ^*.owp

(เช่นจับคู่อะไรก็ได้ยกเว้นรูปแบบ*.owp)

หรือ:

ls -l *~*.owp

(เช่นจับคู่สิ่งที่ตรงกับรูปแบบ*แต่ไม่ตรงกัน*.owp)

ดูman zshexpn=> FILENAME GENERATION=> Glob Operatorsสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้


ต่อท้าย()ในรูปแบบแบบกลมเหมาะสำหรับตัวระบุแบบกลม ๆ ในขณะที่คุณต้องการตัวดำเนินการแบบกลม

อะไร*.(^owp)คือ:

  1. จับคู่ชื่อไฟล์ทั้งหมดที่ลงท้ายด้วยจุด
  2. หากพวกเขาไม่ใช่ท่อ(^p)และ
  3. จัดเรียงรายการที่ตรงกัน(o)โดย " w" => "ตัวระบุการเรียงลำดับที่ไม่รู้จัก"

ดูman zshexpn=> FILENAME GENERATION=> Glob Qualifiersสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้


1
^ *. owp ทำงาน whooa สำหรับสิ่งที่ *. (^ owp) ทำจริงๆ :)
คณิตศาสตร์

9
สำหรับผู้ที่ไม่สามารถใช้งานได้คุณต้องตั้งค่าextendedglobตัวเลือกใน Zsh
DBedrenko

7
@DBedrenko: ขอบคุณ! NB: ทำผ่านsetopt extendedglob
โทมัส M

1
ฉันพบว่ามีประโยชน์นี้เป็นบทสรุปโดยย่อสำหรับทุกคนที่สนใจตัวระบุ glob
wardw
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.