Câu trả lời:
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path>
hoạt động tốt trên EL 6
"\\"
sẽ được sử dụng (nếu không bạn luôn phải nhớ những ký tự nào là lối thoát đặc biệt). Vì vậy, đó là một sự khác biệt trích dẫn nếu tác giả có nghĩa là "trích dẫn nhân vật toàn cầu" (không cần thiết). Dù bằng cách nào, một dấu gạch chéo ngược như thế là lỗi chính tả.
Thử:
unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to
caution: filename not matched: foldername/\*
khi chạy unzip $repozip "$2-master/\*" -d /srv/www/magento/
ở đâu $2
là tên thư mục trong zip Tôi muốn kéo tất cả các tệp và thư mục ra khỏi
"path/*"
.
mv
sau đó để có được các tập tin mà tôi cần chúng.
-j
cho điều đó.
-j
dải tất cả thông tin đường dẫn và tất cả các tệp đi vào thư mục đích. Có cách nào để loại bỏ chỉ phần chung của đường dẫn không? Akin để zip -r
.
Hai câu trả lời hiện tại đều đúng, nhưng hơi khó để xác định thư mục đích, cần được làm rõ hơn.
Giả sử /target/root/
là thư mục tiêu theo hành động giải nén ban đầu, ví dụ:
unzip -qq src.zip -d "/target/root/"
Sau đó, chúng ta cần sử dụng giống /target/root/
như thư mục đích sau đó mặc dù chúng tôi chỉ muốn trích xuất một thư mục con cụ thể, như cách giải nén hoạt động:
unzip -qq src.zip "sub/dir/*" "/target/root/"
Rốt cuộc, quy tắc thực sự đơn giản, sử dụng cùng thư mục gốc cho -d
tùy chọn .
BTW, -qq
tùy chọn là để giải nén thực sự yên tĩnh, hãy thoải mái loại bỏ nó.