กำลังพยายามคลายซิปไฟล์ 'ชื่อไฟล์ไม่ตรงกัน' เมื่อมีไดเรกทอรีอยู่


32

ในขณะที่พยายามคลายซิปไฟล์ชื่อ Joomla_3.0.3-Stable-Full_Package.zip ไปยังไดเรกทอรีชื่อjoomlaฉันได้รับชื่อไฟล์ไม่ตรงกัน ทำไมถึงเป็นอย่างนั้น?

[root @ Feddy Joomla] # unzip -Z Joomla_3.0.3-Stable-Full_Package.zip / opt / lampp / htdocs / joomla /
เอกสารเก่า: Joomla_3.0.3-Stable-Full_Package.zip
ข้อควรระวัง: ชื่อไฟล์ไม่ตรงกัน: / opt / lampp / htdocs / Joomla /

นี่คือการส่งหน้าจอของไดเรกทอรี:

นักแสดงหน้าจอ joomla

(ไดเรกทอรี joomla ว่างเปล่า)

คำตอบ:


36

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

unzip -o somearchive.zip somedir/*

สิ่งที่อาจเกิดขึ้นคือ bash นั้นขยายsomedir/*ไปถึง dir ที่มีอยู่จริงและไฟล์ที่มันบรรจุอยู่ รายการนั้นจะถูกส่งไปยัง unzip และพยายามค้นหาไฟล์เหล่านี้ในไฟล์ zip

เพื่อป้องกันพฤติกรรมนี้ให้หลบหนีสิ่งต่อไป*นี้:

unzip -o somearchive.zip somedir/\*

หรือวางไฟล์เพื่อแยกด้วยเครื่องหมายคำพูดคู่:

unzip -o somearchive.zip "somedir/*"

1
แฟล็ก -o คืออะไร
Amalgovinus

1
ตัวเลือก -o คือการเขียนทับไฟล์ที่มีอยู่โดยไม่ต้องแจ้ง
sjbotha

คุณอาจได้รับข้อผิดพลาด 'ชื่อไฟล์ที่ไม่ตรงกัน' เมื่อ-oธงของคุณอยู่ผิดที่: unzip -o ARCHIVE_NAME.zipดีในขณะที่unzip ARCHIVE_NAME.zip -oไม่ดี
Jaymon

Downvoting เพราะแม้ว่าคำตอบนี้จะสร้างข้อความจริง แต่พวกเขาไม่ได้แก้ไขปัญหาที่ OP มีซึ่งเป็นความเข้าใจผิดเกี่ยวกับข้อโต้แย้งที่จะเปิดเครื่องรูด
Ernest Friedman-Hill

ฉันพบข้อผิดพลาดนี้พบหน้านี้และคำตอบนี้แก้ปัญหาของฉันได้
Derek Bennett

16

อาร์กิวเมนต์ชื่อไฟล์หลังจากชื่อไฟล์เก็บถาวรระบุไฟล์ที่จะแตก ใช้-dเพื่อระบุไดเรกทอรีเป้าหมาย:

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
    ...
    -d  extract files into exdir

นอกจากนี้ยัง-Zใช้ในการสอบถามการเก็บถาวรไม่ใช่การแยก


ไม่ได้รับคุณ คุณช่วยเขียนคำสั่งได้ไหม
Suhail Gupta

1
@SuhailGupta: unzip -d /opt/lampp/htdocs/joomla/ Joomla_3.0.3-Stable-Full_Package.zipคือลดลงเพิ่ม-Z -d
choroba

2

คำสั่งที่แน่นอนนี้เหมาะกับฉัน:
unzip -o archive.zip -d /Users/current/Dev/tools/

สังเกตการผสมผสานของตัวเลือก-o& -d(ปลายทาง / เส้นทางเงินเฟ้อ)


ทำงานให้ฉันด้วย
Manikandan Arunachalam

2

คุณจะได้รับข้อผิดพลาดเช่นกันหากคุณพยายามคลายซิปไดเรกทอรีทั้งหมดของรหัสไปรษณีย์ด้วยคำสั่งเดียวเช่น:

unzip *.zip

ฉันพบวิธีแก้ปัญหาในเว็บไซต์อื่น *สัญลักษณ์จะต้องหนีดังนั้นคุณควรจะทำงานนี้แทน:

unzip \*.zip

แทน.


โอ้ .. ดูเหมือนว่าอนุญาตให้ใช้สัญลักษณ์การหลบหนีได้ แต่ฉันแน่ใจว่าทุกคนรู้ว่าสิ่งเหล่านั้นคืออะไร
dfasdfg

สิ่งนี้ไม่สมเหตุสมผลสำหรับฉันอย่างน้อยก็ไม่ใช่ถ้าคุณกำลังพูดถึง Unix / Linux (มันอาจจะทำให้รู้สึกว่าคุณกำลังพูดถึง Windows แต่คำถามนี้เป็นเรื่องเกี่ยวกับ Fedora Linux.) และเท่าที่มันจะทำให้ความรู้สึกที่ (อาจ) ก็ดูเหมือนจะซ้ำกับ  คำตอบของ sjbotha คุณสามารถอธิบายสิ่งที่คุณหมายอย่างชัดเจนมากขึ้น?
G-Man กล่าวว่า 'Reinstate Monica'

ฉันกำลังพูดถึงคำสั่ง unzip ที่ฉันใช้กับระบบ linux ฉันมีไดเรกทอรีที่มีไฟล์ zip จำนวนมากและฉันพยายามแยกไฟล์ทั้งหมดด้วย unzip * .zip และได้รับข้อผิดพลาดนั้นเนื่องจาก * ไม่ได้หลบหนี คุณอาจจะพูดถูกเกี่ยวกับสิ่งที่ไม่ได้อยู่ที่นี่เนื่องจาก op พยายามดึงไฟล์ zip หนึ่งไฟล์และฉันพยายามแยกหลายไฟล์ด้วยคำสั่งเดียว
dfasdfg

1

ความพยายามที่จะแตกไฟล์ซิปที่มีชื่อใหม่จะทำให้เกิดข้อยกเว้น 'ชื่อไฟล์ที่ไม่ตรงกัน' หากต้องการแก้ไขปัญหานี้ให้ย้ายไฟล์ซิปไปยังไดเรกทอรีปลายทาง

mv the_file.zip somedir/

นำทางไปยังไดเรกทอรีปลายทาง

cd somedir/

จากนั้นรันคำสั่ง unzip โดยไม่มีอาร์กิวเมนต์ชื่อไฟล์ปลายทาง

unzip the_file.zip

ทุกอย่างจะทำงานได้ดี

ดังนั้นในกรณีนี้คำสั่งควรจะเป็น

[root@Feddy Joomla]# mv Joomla_3.0.3-Stable-Full_Package.zip /opt/lampp/htdocs/joomla/
[root@Feddy Joomla]# cd /opt/lampp/htdocs/joomla/
[root@Feddy Joomla]/opt/lampp/htdocs/joomla# unzip Joomla_3.0.3-Stable-Full_Package.zip
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.