Bilah kemajuan panjang tetap, jumlah file atau byte, atau lebih baik lagi penghitung waktu yang menunjukkan perkiraan sisa waktu akan ideal.
zip
Perilaku standar tampaknya mencetak baris untuk setiap file yang diproses, tetapi saya tidak ingin informasi itu berlebihan ketika saya zip ribuan file. Saya ingin menebak perkiraan berapa lama.
Saya mencoba opsi -q
( --quiet
) dalam kombinasi dengan -dg
( --display-globaldots
) tetapi itu hanya membanjiri stdout dengan beberapa garis titik dan tidak memberikan indikasi yang berguna.
Saya juga mencoba -qdgds 10m
seperti yang disebutkan di halaman manual, tetapi mendapat hasil yang sama.
Saya kemudian mencoba -db
( --display-bytes
) dan -dc
( --display-counts
) tetapi sepertinya tidak ada opsi global, jadi ia mencetaknya lagi untuk setiap nama file.
Terakhir, saya mencobanya bersama dengan -q
like -qdbdc
, tapi itu tidak menghasilkan apa-apa.
Lucunya, saya menemukan halaman manual di situs info-zip yang menyebutkan opsi -de
( --display-est-to-go
) yang seharusnya "Menampilkan perkiraan waktu untuk menyelesaikan operasi pengarsipan."
Kedengarannya persis seperti yang saya inginkan, tetapi masalahnya adalah versi saya zip
tidak memiliki fitur itu. Saya menggunakan Ubuntu 14.04.1 64bit, bash-4.3.30 (1) dan zip-3.00. Menurut Wikipedia, ini adalah rilis stabil terbaru zip.
Ada versi beta yang belum dirilis pada halaman info-zip sourceforge, tapi saya lebih suka tidak mempercayakan data saya ke rilis beta.
tee
. Sebelum memulai zip, buat jumlah total file (denganls
ataufind -type f
) dan ketika sedang zip, baca file log untuk jumlah baris file yang diproses yang sudah ada (dengangrep
untuk baris yang tepat untuk melihat, danwc -l
untuk baris hitung), sehingga info tingkat tinggi Anda akan menampilkan sesuatu seperti "234/76438 file yang diproses";pv /path/to/file | gzip > /path/to/file.gz
Jawaban:
zip
dapat memampatkan data ke output standar. Karenanya, Anda dapat menggabungkannya dengan alat lain sepertipv
:Hapus salah satu
-bep
opsi sebagai kenyamanan Anda.sumber
Jika Anda setuju menggunakan 7z:
Ini akan memberi Anda bilah kemajuan seperti ini:
sumber
Saya telah berhasil menggunakan yang berikut ini:
Dan ini dijelaskan di bawah ini:
zip secara rekursif ke dalam [target_zip] file [folder_to_zip] mengarahkan stderr ke stdout. Catatan, stderr itu akan berisi satu baris untuk setiap file dan direktori yang sedang diproses.
pipa ke pv baris dengan nama file karena mereka sedang keluaran dari zip. pv dioperasikan dalam mode garis (menghitung kemajuan berdasarkan garis dan ukuran juga dalam jumlah garis yang diharapkan - lihat opsi halaman manual -L PV ).
Ukuran total garis yang diharapkan dikumpulkan dengan mendaftarkan secara berulang (ls) [folder_to_zip] dan menghitung garis yang dimulai dengan '-' atau 'd' yaitu semua file dan direktori (ingat direktori terdaftar dimulai dengan '/') .
Di atas memberikan persentase penyelesaian yang akurat karena 100% tercapai ketika semua file dan direktori telah diproses.
Masalah dengan jawaban pedroapero adalah bahwa kemajuan dihitung pada jumlah byte yang diproses (dikompresi) dari jumlah total byte yang diproses (tidak dikompresi). Akibatnya proses akan selesai sekitar 30% (tergantung pada tingkat kompresi).
sumber