Saya memiliki file ZIP di mana ada direktori teratas tempat semua file disimpan:
Release/
Release/file
Release/subdirectory/file
Release/subdirectory/file2
Release/subdirectory/file3
Saya ingin mengekstrak semuanya di bawah Release
, mempertahankan struktur direktori, tetapi ketika saya menjalankan ini:
unzip archive.zip Release/* -d /tmp
Itu menciptakan Release
folder teratas :
/tmp/Release/
/tmp/Release/file
/tmp/Release/subdirectory/file
/tmp/Release/subdirectory/file2
/tmp/Release/subdirectory/file3
Bagaimana saya bisa mengekstrak semua yang ada di dalamnya Release
tanpa membuat Release
folder, seperti ini:
/tmp/
/tmp/file
/tmp/subdirectory/file
/tmp/subdirectory/file2
/tmp/subdirectory/file3
command-line
unzip
Musa
sumber
sumber
unzip archive.zip && mv Release/* .
Release
folderJawaban:
Dalam kasus Anda, coba di folder target:
Daripada Anda perlu menghapus tautan yang Anda buat:
sumber
The
j
bendera harus mencegah pembuatan folderunzip -j archive.zip -d .
Dari halaman manual :
sumber
-j
pilihan kesedihan semua file ke dalam direktori saat ini tanpa memperhatikan struktur direktori dalam arsip.Skrip python untuk meratakan pohon yang diekstraksi
Script yang ditulis di bawah ini mengekstrak file zip dan memindahkan file yang ada di dalam direktori paling atas ke direktori kerja saat ini. Skrip cepat ini dirancang agar sesuai dengan pertanyaan khusus ini di mana ada satu direktori teratas yang berisi semua file, meskipun dengan beberapa pengeditan dapat dibuat cocok untuk kasus yang lebih umum.
Uji coba
Berikut ini contoh cara kerja skrip. Semuanya diekstraksi ke direktori kerja saat ini, tetapi file sumber dapat berada di direktori differet sama sekali. Tes ini dilakukan pada arsip zip repositori github pribadi saya.
Tes dengan file sumber berada di lokasi yang berbeda
sumber