Pertanyaan Zip arsip tanpa menyertakan direktori induk


Saya ingin meng-zip banyak folder dalam pohon direktori seperti itu

V-
 something.txt
 folder
 folder
 g.jpg
 h.jar

Ketika saya mencoba untuk meng-zip-nya, ia akhirnya membuat arsip zip dengan folder v alih-alih kontennya (sub direktori dan file)

Bagaimana saya bisa menghindari ini?


15
2017-09-07 01:10


asal




Jawaban:


Jadi jika saya mengerti dengan benar, Anda mencoba mengarsipkan file & folder dalam folder tertentu tetapi tanpa menyertakan folder root.

Contoh:

/test/test.txt
/test/test2.txt

di mana test.txt dan test2.txt akan disimpan di zip, tetapi tidak / test /

Anda dapat melakukan cd ke direktori / test / kemudian menjalankan sesuatu seperti,

zip -r filename.zip ./*

Yang mana akan membuat arsip di folder yang sama bernama filename.zip. Atau jika menjalankannya dari luar folder yang bisa Anda jalankan,

zip -r test.zip test/*

The / * adalah bagian yang hanya menyertakan isi folder, bukan seluruh folder.

Edit: OP ingin beberapa ritsleting, solusi akhirnya menjadi sedikit hack, saya ingin tahu apakah ada cara yang lebih baik untuk melakukan ini.

for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;

17
2017-09-07 01:26



ya tetapi saya memiliki banyak file yang saya lakukan hal yang sama sehingga akan membosankan melakukannya seperti itu jadi ada seperti bash script atau sesuatu yang akan mengotomatiskan proses yang sama pada direktori yang memiliki semua folder - Dami
Oh, seperti ini? (ini akan membuat arsip dari setiap folder dalam folder saat ini) for d in */ ; do base=$(basename "$d") ; zip -r "${base}.zip" "$d" ; done; - zzbomb
Ok saya menjalankan skrip dan itu membuat direktori induk di arsip saya ingin hanya isi folder yang ada di arsip - Dami
uji zip -r test.zip / * dari luar menambahkan tes sebagai direktori ke dalam file zip - smihael
seperti @smihael menyatakan, zip -r test.zip test/* tidak bekerja. apakah ada cara yang benar untuk mencapai ini dari luar direktori? - andrhamm


Menggunakan -j atau --junk-paths pilihan dalam perintah zip Anda.

Dari halaman manual zip:

-j

--junk-paths

Store just the name of a saved file (junk the path), and do not store directory 
names. By default, zip will store the full path (relative to the current 
directory).

10
2017-07-28 18:05





Bagaimana dengan perintah ini?

$ cd somedir ; zip -r ../zipped.zip . * ; cd ..

9
2018-03-09 13:45



Meskipun ini adalah jawaban yang benar, pendahuluan tidak terdengar seperti Anda meyakinkan diri sendiri. Ini juga akan membantu menjelaskan sedikit, apa yang dilakukan oleh perintah itu. - Nephente
Ini adalah solusi saya juga, tetapi saya tidak menyukainya karena itu melibatkan cd. Berharap ada cara untuk menentukan jalan yang tersimpan lebih tepat. - nilskp