Saya memiliki satu direktori yang berisi lusinan direktori di dalamnya.
Saya baru mengenal baris perintah dan saya kesulitan membuat perintah yang akan meng-zip setiap sub-direktori menjadi file sub-direktori.zip yang unik.
Jadi pada akhirnya direktori utama saya akan diisi dengan semua sub-direktori asli saya, ditambah .zip yang sesuai file yang berisi konten zip setiap sub-direktori.
Apakah hal seperti ini mungkin? Jika ya, tunjukkan cara melakukannya.
Jawaban yang Diterima:
Anda dapat menggunakan loop ini di bash :
for i in */; do zip -r "${i%/}.zip" "$i"; done
i adalah nama variabel loop. */ berarti setiap subdirektori dari direktori saat ini, dan akan menyertakan garis miring di nama-nama itu. Pastikan Anda cd ke tempat yang tepat sebelum menjalankan ini. "$i" cukup beri nama direktori itu, termasuk trailing slash. Tanda kutip memastikan bahwa spasi dalam nama direktori tidak akan menyebabkan masalah. ${i%/} seperti $i tetapi dengan menghilangkan garis miring, Anda dapat menggunakannya untuk membuat nama file zip.
Jika Anda ingin melihat cara kerjanya, sertakan echo sebelum zip dan Anda akan melihat perintah dicetak alih-alih dieksekusi.
Eksekusi paralel
Untuk menjalankannya secara paralel, Anda dapat menggunakan & :
for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait
Kami menggunakan wait untuk memberi tahu shell agar menunggu semua tugas latar belakang selesai sebelum keluar.
Berhati-hatilah bahwa jika Anda memiliki terlalu banyak folder di direktori Anda saat ini, Anda dapat membebani komputer Anda karena kode ini tidak membatasi jumlah tugas paralel.