고정 길이 진행률 표시줄, 파일 또는 바이트 수 또는 더 나아가 남은 예상 시간을 표시하는 타이머가 이상적입니다.
zip
표준 동작은 처리된 각 파일에 대해 한 줄을 인쇄하는 것 같지만 수천 개의 파일을 압축할 때 정보가 과부하되는 것을 원하지 않습니다. 얼마나 걸릴지 견적받고 싶습니다.
-q
( ) 옵션과 함께 ( ) 옵션을 사용해 보았지만 --quiet
표준 출력이 여러 줄의 점으로 가득 차고 유용한 지침이 제공되지 않습니다.-dg
--display-globaldots
매뉴얼 페이지에 언급된 대로 시도해 보았지만 -qdgds 10m
동일한 결과를 얻었습니다.
-db
그런 다음 ( --display-bytes
) 및 -dc
( ) 를 시도했지만 --display-counts
전역 옵션이 없는 것 같아서 각 파일 이름에 대해 다시 인쇄합니다.
마침내 나는 -q
그것을 like와 함께 사용해 보았지만 -qdbdc
아무것도 출력하지 않았습니다.
흥미롭게도 나는 info-zip 웹사이트에서 "아카이브 작업을 완료하는 데 걸리는 예상 시간을 표시"하는 -de
( ) 옵션을 언급하는 매뉴얼 페이지를 발견했습니다.--display-est-to-go
이것이 바로 내가 원하는 것처럼 들리지만 문제는 내 버전에 zip
해당 기능이 없다는 것입니다. 저는 Ubuntu 14.04.1 64비트, bash-4.3.30(1) 및 zip-3.00을 사용하고 있습니다. Wikipedia에 따르면 이것은 zip의 최신 안정 버전입니다.
info-zip sourceforge 페이지에 아직 출시되지 않은 베타가 있는데, 내 데이터를 베타에 맡기고 싶지 않습니다.
답변1
7z를 사용할 수 있는 경우:
7z a output.zip folder/
그러면 다음과 같은 진행률 표시줄이 표시됩니다.
Open archive: test.zip
--
Path = test.zip
Type = zip
Physical Size = 232039663
Scanning the drive:
3 folders, 2401 files, 238122225 bytes (228 MiB)
Updating archive: test.zip
Items to compress: 2404
16% 279 U folder/file.txt
답변2
zip
데이터를 표준 출력으로 압축할 수 있습니다. 따라서 다음과 같은 다른 도구와 결합할 수 있습니다 pv
.
zip -qr - [folder] | pv -bep -s $(du -bs [folder] | awk '{print $1}') > [file.zip]
-bep
귀하의 편의에 따라 옵션 중 하나를 제거하십시오.
답변3
나는 다음을 성공적으로 사용했습니다.
zip -r [target_zip] [folder_to_zip] 2>&1 |
pv -lep -s $(ls -Rl1 [folder_to_zip] | egrep -c '^[-/]') > /dev/null
설명은 다음과 같습니다.
zip -r [target_zip] [folder_to_zip] 2>&1 |
zip은 [target_zip] 파일로 반복되고 [folder_to_zip]은 stderr을 stdout으로 리디렉션합니다. stderr에는 다음이 포함됩니다.파일 및 디렉터리당 한 줄처리.
pv -lep -s $(ls -Ral1 [folder_to_zip] | egrep -c '^[-/]') > /dev/null
pv
파일 이름이 zip에서 출력되면 파일 이름이 포함된 줄에 파이프하세요. pv
행 모드에서 작동(진행률은 행 수를 기준으로 계산되며 크기도 예상 행 수입니다. 참조)PV 매뉴얼 페이지 -l 옵션).
예상 행의 전체 크기는 (ls) [folder_to_zip]을 재귀적으로 나열하고 "-" 또는 "d"로 시작하는 행을 계산하여 수집됩니다. 즉,모든 파일 및 디렉토리('/'로 시작하는 디렉토리를 기억하세요).
모든 파일과 디렉터리가 처리되면 100%에 도달하므로 정확한 완료율은 위에 나와 있습니다.
pedroapero의 대답의 문제점은 처리된(압축된) 바이트 수를 처리될(압축되지 않은) 총 바이트 수로 나눈 값을 기준으로 진행률이 계산된다는 것입니다. 따라서 압축률에 따라 약 30% 정도 프로세스가 완료됩니다.
답변4
명령에 플래그를 추가 할 수 있습니다 -qq
. 이것은 나에게 효과적입니다.
예:
zip -r -qq out_chairs.zip out_chairs/