cara menentukan direktori target unzip

21

Apakah ada opsi pada perintah zip linux sehingga saya bisa mengkodekan direktori targetnya. Sebagai contoh, saya ingin meng-zip file ./mydir ke myzipfile.zip tapi saya ingin perintah unzip untuk membuat direktori spesifik "projx" dan memperluas file yang berada di bawah ./mydir ke sana.

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )
seedhom
sumber
Pada Unix: unix.stackexchange.com/questions/12686/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

18

Tidak ada opsi seperti itu, setidaknya tidak untuk Info-ZIP. Anda harus membuat direktori projx sendiri, memindahkan / menyalin file Anda ke dalamnya dan kemudian meneruskannya ke zip.

Jika direktori sudah ada maka hanya lulus pilihan -duntuk unzipmenentukan direktori target untuk ekstraksi.

scai
sumber
4

Untuk melakukan itu ada cara lain. Anda dapat meratakan seluruh isi file zip menggunakan metode berikut. Direktori target adalah " projx " dan jalankan perintah berikut.

cd /projx && unzip -j /path/to/myzipfile.zip

Opsi -j disebut "jalur sampah" dan hanya membuang setiap file ke direktori saat ini alih-alih mengekstraksi struktur direktori apa pun.

Chaminda Bandara
sumber
0

Saya tidak tahu tentang opsi baris perintah tertentu, tetapi Anda dapat menggunakan perintah berikut untuk mencapai tujuan Anda:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

Perintah pertama membuat tautan simbolis, sehingga Anda dapat mengakses file mydirjuga melalui projx. Kemudian menggunakan Info-ZIP(diuji dengan versi 2.31) tautan simbolik ditereferensi (ini adalah default, kecuali jika Anda tentukan -y) dan file disimpan secara rekursif:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Anda lihat, nama folder disimpan dalam file juga - jadi setelah ekstraksi direktori projxdibuat.

Namun, saya tidak bisa memikirkan kemungkinan untuk menyimpan jalur absolut, tetapi ini adalah ide yang buruk.

mpy
sumber
Path absolut hanya berfungsi pada MacOS dengan menentukan opsi -jj. Pada sistem operasi lain hanya opsi -jyang didukung (dan -jjdiartikan sebagai -j) yang menghilangkan setiap jalur utama dan dengan demikian mengarah ke sebaliknya (desain yang sangat pintar ...).
scai