Une barre de progression de longueur fixe, un nombre de fichiers ou d'octets, ou mieux encore un minuteur indiquant le temps restant estimé serait idéal.
zip
Le comportement standard semble être d'imprimer une ligne pour chaque fichier traité, mais je ne veux pas que cette information soit surchargée lorsque je zippe des milliers de fichiers. Je veux une estimation approximative du temps que cela va prendre.
J'ai essayé l' option -q
( --quiet
) en combinaison avec -dg
( --display-globaldots
) mais cela inonde simplement la sortie standard avec plusieurs lignes de points et ne donne aucune indication utile.
J'ai également essayé -qdgds 10m
comme mentionné dans la page de manuel, mais j'ai obtenu le même résultat.
J'ai ensuite essayé -db
( --display-bytes
) et -dc
( --display-counts
) mais il ne semble pas y avoir d'option globale, donc il l'imprime à nouveau pour chaque nom de fichier.
Enfin, je l'ai essayé avec -q
like -qdbdc
, mais cela ne produit rien.
Curieusement, j'ai trouvé une page de manuel sur le site info-zip qui mentionne une option -de
( --display-est-to-go
) qui devrait "afficher une estimation du temps nécessaire pour terminer l'opération d'archivage".
Cela ressemble exactement à ce que je veux, mais le problème est que ma version de zip
n'a pas cette fonctionnalité. J'utilise Ubuntu 14.04.1 64bit, bash-4.3.30 (1) et zip-3.00. Selon Wikipedia, il s'agit de la dernière version stable de zip.
Il existe des versions bêta inédites sur la page info-zip sourceforge, mais je préfère ne pas confier mes données à une version bêta.
la source
tee
. Avant de démarrer zip, faites un compte total des fichiers (avecls
oufind -type f
) et pendant qu'il zippe, lisez le fichier journal pour le nombre de lignes de fichiers traités qu'il possède déjà (avecgrep
pour les bonnes lignes à regarder etwc -l
pour les lignes compte), donc vos informations de haut niveau afficheront quelque chose comme "234/76438 fichiers traités";pv /path/to/file | gzip > /path/to/file.gz
Réponses:
zip
peut compresser les données en sortie standard. Par conséquent, vous pouvez le combiner avec d'autres outils commepv
:Supprimez l'une des
-bep
options à votre convenance.la source
Si vous êtes d'accord avec l'utilisation de 7z:
Cela vous donnera une barre de progression comme celle-ci:
la source
J'ai utilisé avec succès les éléments suivants:
Et cela est expliqué ci-dessous:
zip récursivement dans le fichier [target_zip] le [folder_to_zip] redirigeant stderr vers stdout. Notez que stderr contiendra une ligne pour chaque fichier et répertoire en cours de traitement.
canalisez en pv les lignes avec les noms de fichiers lors de leur sortie depuis zip. pv fonctionne en mode ligne (le comptage des progrès en fonction des lignes et de la taille est également en nombre de lignes à prévoir - voir l' option PV man page -l ).
La taille totale des lignes à attendre est collectée en listant récursivement (ls) le [dossier_à_zip] et en comptant les lignes commençant par '-' ou 'd' c'est-à-dire tous les fichiers et répertoires (rappelez-vous que les répertoires sont répertoriés en commençant par '/') .
Ce qui précède fournit un pourcentage d'achèvement précis car le 100% est atteint lorsque tous les fichiers et répertoires ont été traités.
Le problème avec la réponse de pedroapero est que la progression est calculée sur le nombre d'octets traités (compressés) sur le nombre total d'octets à traiter (non compressés). En conséquence, le processus se terminera à environ 30% (en fonction du taux de compression).
la source