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
$