ฉันรวบรวมสคริปต์เพื่อดำเนินการบางอย่างกับฉัน ฉันใช้โอเปอเรเตอร์การ์ด*เพื่อใช้ฟังก์ชั่นกับไฟล์ทุกประเภท แต่มีสิ่งหนึ่งที่ฉันไม่ได้รับ ฉันสามารถunzipไฟล์ทั้งหมดในโฟลเดอร์เช่นนี้
unzip "*".zip
อย่างไรก็ตามในการลบไฟล์ zip ทั้งหมดหลังจากนั้นฉันต้องทำ
rm *.zip
นั่นคือมันไม่ต้องการเครื่องหมายคำพูด unzip ในทางกลับกันไม่สามารถใช้งานได้หากฉันให้ * (ให้คำเตือนว่า "ไฟล์ไม่ตรงกัน")
ทำไมถึงแตกต่างกัน? สำหรับฉันดูเหมือนว่าการดำเนินการเดียวกันแน่นอน หรือฉันใช้การ์ดไวด์ไม่ถูกต้อง?
การแนะนำให้รู้จักกับไวด์การ์ดใน Unix นั้นไม่ได้ทำสิ่งนี้จริงๆและฉันไม่สามารถหาตำแหน่งใด ๆ ในเอกสารrmหรือzip
ฉันใช้เทอร์มินัลกับ Mac (Yosemite)
unzipใช้ glob กับเนื้อหาของการเก็บถาวร; คุณไม่สามารถรับพวกเขาจากการทุบตีด้วยตัวแทน (คุณต้องการ `` `for f in unzip -l archive.zip; do ... done`)
unzipยอมรับ globs ให้เข้ากับไฟล์ zip ไฟล์เดียว แต่นี่แตกต่าง ฉันลองunzip '*.zip'ในไดเรกทอรีที่มีไฟล์ zip หลายไฟล์และแยกไฟล์ทั้งหมดจากรหัสไปรษณีย์ทั้งหมด อย่างที่ฉันพูดไปมันแปลกมาก tarไม่มีโหมดการทำงานใด ๆ เช่นนั้น
unzipจะทำสิ่งนี้ได้อย่างไรหากไม่มีfor f in *.zip;do...doneเชลล์วงวนปกติ UI บรรทัดคำสั่งแปลก ๆ ที่ไม่เหมือนยูนิเซฟ