Elenca il numero di file in più file zip

1

Come posso ottenere il numero totale di file in più file zip allo stesso tempo? Ho circa 1000 zipfile in una cartella e vorrei sapere la quantità totale di file al loro interno tutti combinati. Come posso fare questo? Ho provato

zipinfo -t file.zip 

Ma questo mi dà solo il numero di quell'archivio, ho anche provato

zipinfo -t *zip/?.zip

e ottiene

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

Qualche suggerimento?

    
posta Halalbin 01.02.2016 - 19:02
fonte

1 risposta

0

C'è sicuramente più di un modo per farlo e quello che sto presentando non è necessariamente il modo migliore, tuttavia è un modo che funziona. Crea uno script bash usando il seguente codice .

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

Quindi dovresti cd alla directory contenente i file di archivio zip ed eseguire lo script bash con il suo nome se è in $PATH o il suo nomepercorso se non è in $PATH .

Supponiamo di salvarlo come getfilecount nella tua directory $HOME , che normalmente non è nella tua $PATH che avresti cd nella directory contenente i file di archivio zip e poi usare:

~/getfilecount

Per fare in modo che lo script bash crei un file di testo vuoto, ad es. touch getfilecount e quindi apri il file, ad es. open getfilecount aggiungi il codice sopra tramite copia e incolla e salvalo. Ora rendi eseguibile il file, ad esempio chmod +x getfilecount e ora puoi usarlo così com'è o metterlo in una directory che è in $PATH , quindi tutto ciò che devi digitare una volta che la modifica alla directory contenente i file di archivio zip è : getfilecount

Di seguito è riportato un esempio di output per mostrare la differenza tra l'uso di un singolo metodo di comandi e uno script di bash.

Comandi di emissione, uno alla volta:

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

Uso di getfilecount (quando lo script bash è in $PATH ) :

$ cd zipfiles
$ getfilecount

The total file count is: 109
$ 
    
risposta data 01.02.2016 - 19:52
fonte

Leggi altre domande sui tag