Индикатор выполнения фиксированной длины, число файлов или байтов или, что еще лучше, таймер, показывающий приблизительное оставшееся время, было бы идеальным.
zipСтандартное поведение, по-видимому, заключается в печати строки для каждого обработанного файла, но я не хочу, чтобы эта информационная перегрузка была связана с сжатием тысяч файлов. Я хочу предположить, сколько времени это займет.
Я попробовал опцию -q( --quiet) в сочетании с -dg( --display-globaldots), но это просто затопляет стандартный вывод несколькими строками точек и не дает никаких полезных указаний.
Я также попробовал, -qdgds 10mкак упоминалось в справочной странице, но получил тот же результат.
Затем я попытался -db( --display-bytes) и -dc( --display-counts), но, похоже, не существует глобального параметра, поэтому он снова печатает его для каждого имени файла.
Наконец, я попробовал это вместе с -qлайком -qdbdc, но это ничего не дает.
Как ни странно, я нашел страницу man на сайте info-zip, в которой упоминается опция -de( --display-est-to-go), которая должна «отображать приблизительное время завершения операции архивирования».
Это похоже на то, что я хочу, но проблема в том, что моя версия zipне имеет этой функции. Я использую Ubuntu 14.04.1 64bit, bash-4.3.30 (1) и zip-3.00. Согласно Википедии, это последний стабильный релиз zip.
На странице info-zip sourceforge есть неизданные бета-версии, но я бы не стал доверять свои данные бета-версии.
pv /path/to/file | gzip > /path/to/file.gz
tee. Перед запуском zip, сделайте общее количество файлов (с помощьюlsилиfind -type f) и, пока он архивирует, прочитайте файл журнала на количество строк обработанных файлов, которые у него уже есть (с помощьюgrepдля просмотра правильных строк иwc -lдля строк считать), поэтому ваша информация высокого уровня будет отображать что-то вроде «234/76438 обработанных файлов»;