Ho 348 file zip e voglio trovare un file che si trova in uno dei file zip, unzip -l
non funziona con i caratteri jolly?
Come posso elencare il contenuto di tutti i .zip
file e grep
attraverso l'elenco unito di tutti i file contenuti nelle zip?
Ho 348 file zip e voglio trovare un file che si trova in uno dei file zip, unzip -l
non funziona con i caratteri jolly?
Come posso elencare il contenuto di tutti i .zip
file e grep
attraverso l'elenco unito di tutti i file contenuti nelle zip?
Risposte:
L'uso zipinfo
è un'ottima soluzione qui. Tuttavia, in generale ogni volta che si desidera applicare un comando a un elenco di file e il comando non accetta un elenco di file, è possibile utilizzare un for
ciclo:
for file in *.zip; do
unzip -l "$file"
done \
| grep "\.zip\|setup"
Se il file che stai cercando ha spazi come:: your file
nell'espressione regolare grep devi scappare da ogni spazio con una barra rovesciata come grep "\.zip\|your\ file"
.
unzip
, quanto imbarazzante.
find
invece.
È possibile utilizzare zipinfo
. È incluso nell'installazione predefinita di Ubuntu. Controlla la pagina del manuale per maggiori informazioni.
Ad esempio, per cercare un modello setup
in un gruppo di file zip nella directory corrente, utilizzare questo comando:
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
caution: filename not matched: case1.zip
... caution: filename not matched: case348.zip
per ogni zip, testato su due sistemi operativi Ubuntu, 11.10 e 12.04.
setup
e mette lo stesso errore, anche se funziona così:zipinfo -l * | grep "setup"
Per elencare i file in un archivio zip è possibile utilizzare il seguente comando.
unzip -l
Per grep un archivio compresso è necessario utilizzare le utilità di archivio compresso create per funzionare con quel tipo di formato di archivio.
Per archivi zip:
zipgrep --help
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.
Per archivi tar:
zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.
OPTIONs are the same as for 'grep'.
Ci sono alcuni altri strumenti che funzionano anche con gli archivi. Puoi eseguire il pipe out messo in grep per fare la stessa cosa.
zcat
zcat my.archive.zip | grep "some text"
Oppure puoi utilizzare la funzionalità di ricerca di questi strumenti
zless
zmore