Il y a certainement plus d'une façon de le faire et ce que je présente n'est pas nécessairement la meilleure façon, cependant c'est une façon qui fonctionne. Créez un bash script en utilisant ce qui suit code .
#!/bin/bash
c=0
for f in *.zip; do
x="$(zipinfo -t "$f" | awk '{print $1}')"
c=$(( $c + $x ))
done
echo "The total file count is:" $c
Alors vous cd
dans le répertoire contenant les fichiers de l'archive zip et exécutez le script de bash par ses nom si c'est dans le $PATH
ou son chemin d'accès s'il n'est pas dans la $PATH
.
Disons que vous l'enregistrez en tant que getfilecount
dans votre $HOME
qui, normalement, ne se trouve pas dans votre $PATH
vous cd
dans le répertoire contenant les fichiers de l'archive zip et ensuite utiliser :
~/getfilecount
Pour faire le bash
script créer un fichier texte vide, par ex. touch getfilecount
et ensuite ouvrir le fichier, par ex. open getfilecount
ajouter le code ci-dessus par copier-coller et l'enregistrer. Maintenant, rendez le fichier exécutable, par exemple chmod +x getfilecount
et maintenant vous pouvez l'utiliser tel quel ou le placer dans un répertoire qui est dans le $PATH
alors tout ce que vous aurez à taper une fois que vous serez dans le répertoire contenant les fichiers de l'archive zip est : getfilecount
Voici un exemple de sortie pour montrer la différence entre l'utilisation de la méthode des commandes uniques et un bash script.
Je donne des ordres, un par un :
$ cd zipfiles
$ ls
codetest.zip destination.zip helloworld.zip source.zip
$ zipinfo -t "*.zip"
1 file, 820 bytes uncompressed, 437 bytes compressed: 46.7%
1 file, 0 bytes uncompressed, 0 bytes compressed: 0.0%
6 files, 12385 bytes uncompressed, 895 bytes compressed: 92.8%
101 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%
4 archives were successfully processed.
$
Utilisation de getfilecount
(lorsque le bash
script se trouve dans la section $PATH
) :
$ cd zipfiles
$ getfilecount
The total file count is: 109
$