Đang cố giải nén tệp, 'Tên tệp không khớp' khi thư mục tồn tại


32

Trong khi cố gắng giải nén một tệp có tên Joomla_3.0.3-Stable-Full_Package.zip vào thư mục có tên j Joomla tôi nhận được tên tệp không khớp. Tại sao vậy?

[root @ Feddy Joomla] # unzip -Z Joomla_3.0.3-Stable-Full_Package.zip / opt / lampp / htdocs /
j Joomla / Lưu trữ: Joomla_3.0.3-Stable-Full_Package.zip
thận trọng: tên tệp không khớp: / opt / lampp / htdocs / j Joomla /

Đây là màn hình của thư mục:

diễn viên màn hình Joomla

(Thư mục j Joomla trống)

Câu trả lời:


36

Bạn cũng có thể có được điều này khi cố gắng chỉ định các tệp để giải nén và sử dụng ký tự đại diện. Ví dụ:

unzip -o somearchive.zip somedir/*

Điều có thể xảy ra là bash mở rộng somedir/*đến một thư mục thực tế hiện có và các tệp mà nó chứa. Danh sách đó sau đó được chuyển sang giải nén và nó cố gắng tìm các tệp này trong tệp zip.

Để ngăn chặn hành vi này, chỉ cần thoát khỏi *như thế này:

unzip -o somearchive.zip somedir/\*

Hoặc, đặt các tệp để trích xuất trong dấu ngoặc kép:

unzip -o somearchive.zip "somedir/*"

1
Cờ -o là gì?
Amalgovinus

1
Tùy chọn -o là ghi đè lên các tệp hiện có mà không cần nhắc.
sjbotha

Bạn cũng có thể gặp lỗi 'Tên tệp không khớp' khi -ocờ của bạn ở sai vị trí: unzip -o ARCHIVE_NAME.ziptốt trong khi unzip ARCHIVE_NAME.zip -oxấu
Jaymon

Bỏ qua vì, mặc dù câu trả lời này đưa ra tuyên bố đúng, nhưng họ không giải quyết vấn đề mà OP gặp phải, đó là một sự hiểu lầm về các đối số đó để giải nén.
Ernest Friedman-Hill

Tôi đã có lỗi này, tìm thấy trang này và câu trả lời này đã giải quyết vấn đề của tôi.
Derek Bennett

16

Đối số tên tệp sau tên lưu trữ chỉ định tệp cần giải nén. Sử dụng -dđể chỉ định thư mục đích:

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

Hơn nữa, -Zđược sử dụng để truy vấn các kho lưu trữ, không trích xuất.


không hiểu bạn Bạn có thể vui lòng viết lệnh
Suhail Gupta

1
@SuhailGupta : unzip -d /opt/lampp/htdocs/joomla/ Joomla_3.0.3-Stable-Full_Package.zip, tức là thả -Z, thêm -d.
choroba

2

Lệnh chính xác này đã làm việc cho tôi:
unzip -o archive.zip -d /Users/current/Dev/tools/

Lưu ý sự kết hợp của các tùy chọn -o& -d(đường đến / lạm phát).


làm việc cho tôi quá
Manikandan Arunachalam

2

Bạn cũng sẽ gặp lỗi đó nếu bạn cố giải nén toàn bộ thư mục zips bằng một lệnh duy nhất, như:

unzip *.zip

Tôi tìm thấy giải pháp trên một trang web khác. Các *biểu tượng phải được thoát ra, vì vậy bạn nên chạy này thay vì:

unzip \*.zip

thay thế.


oh .. có vẻ như biểu tượng thoát không được phép nhưng tôi chắc chắn rằng mọi người đều biết chúng là gì.
dfasdfg

Điều này không có ý nghĩa gì với tôi, ít nhất là không nếu bạn đang nói về Unix / Linux. (Có thể có ý nghĩa nếu bạn đang nói về Windows, nhưng câu hỏi này là về Fedora Linux.) Và, đến mức nó có ý nghĩa (có khả năng), nó dường như là một bản sao  câu trả lời của sjbotha . Bạn có thể giải thích những gì bạn có nghĩa rõ ràng hơn?
G-Man nói 'Phục hồi Monica'

tôi đã nói về lệnh giải nén mà tôi đã sử dụng trên một hệ thống linux. tôi đã có một thư mục chứa nhiều tệp zip và tôi đã cố giải nén tất cả chúng bằng unzip * .zip và gặp lỗi đó vì * không thoát được. bạn cũng có thể đúng về điều này không thuộc về nơi này vì op chỉ cố gắng giải nén một tệp zip và tôi đã cố gắng giải nén nhiều bằng một lệnh.
dfasdfg

1

Cố gắng giải nén tệp nén bằng tên mới sẽ đưa ra ngoại lệ 'Tên tệp không khớp'. Để khắc phục điều này, di chuyển tệp zip vào thư mục đích

mv the_file.zip somedir/

điều hướng đến thư mục đích

cd somedir/

từ đó chạy lệnh giải nén mà không có đối số tên tệp đích

unzip the_file.zip

Mọi thứ sẽ hoạt động tốt.

vì vậy trong trường hợp này các lệnh nên

[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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.