Indique el número de archivos en múltiples archivos zip

1

¿Cómo puedo obtener el número total de archivos en varios archivos zip al mismo tiempo? Tengo alrededor de 1000 archivos zip en una carpeta y me gustaría saber la cantidad total de archivos dentro de ellos combinados. ¿Cómo puedo hacer esto? Lo he intentado

zipinfo -t file.zip 

Pero eso solo me da el número de ese archivo, también lo he intentado

zipinfo -t *zip/?.zip

y obtiene

caution: filename not matched:  Jo Coo-Day-Sun.zip
caution: filename not matched:  Micke Mouse-Stare-Well-Pt1.zip
caution: filename not matched:  Micke Mouse Cooley-Stare-Well-Pt2.zip

¿Alguna sugerencia?

    
pregunta Halalbin 01.02.2016 - 19:02

1 respuesta

0

Ciertamente hay más de una forma de hacer esto y lo que estoy presentando no es necesariamente la mejor, sin embargo, es una forma que funciona. Cree un script de bash utilizando el siguiente código .

#!/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

Luego, deberías cd al directorio que contiene los archivos comprimidos zip y ejecutar el script bash por su nombre si está en el $PATH o su nombre de ruta si no está en el $PATH .

Supongamos que lo guarda como getfilecount en su directorio $HOME , que normalmente no está en su $PATH , cd en el directorio que contiene los archivos comprimidos zip y luego lo utiliza:

~/getfilecount

Para hacer que el script bash cree un archivo de texto vacío, p. ej. touch getfilecount y luego abra el archivo, por ejemplo, open getfilecount agrega el código anterior a través de copiar y pegar y guardarlo. Ahora haga el archivo ejecutable, por ejemplo, chmod +x getfilecount y ahora puede usarlo como está o ubicarlo en un directorio que esté en el $PATH , entonces todo lo que necesita escribir una vez que se cambie al directorio que contiene los archivos comprimidos zip es : getfilecount

A continuación se muestra una salida de muestra para mostrar la diferencia entre usar el método de comandos individuales y un script de bash.

Ejecución de comandos, uno a la vez:

$ 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.
$

Utilizando getfilecount (cuando el script bash está en el $PATH ) :

$ cd zipfiles
$ getfilecount

The total file count is: 109
$ 
    
respondido por el user3439894 01.02.2016 - 19:52

Lea otras preguntas en las etiquetas