Come elencare il contenuto di tutti i file .zip in una cartella e grep per un file specifico?

26

Ho 348 file zip e voglio trovare un file in uno dei file zip, unzip -l non funziona con i caratteri jolly?

Come posso elencare il contenuto di tutti i file .zip e grep tramite l'elenco unito di tutti i file contenuti nelle cerniere?

    
posta Eduard Florinescu 05.10.2012 - 11:19

3 risposte

16

Utilizzare zipinfo è una soluzione eccellente 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 ciclo for :

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

Se il file che stai cercando ha degli spazi come: your file , nell'espressione regolare di grep devi sfuggire ad ogni spazio con una barra rovesciata come grep "\.zip\|your\ file" .

    
risposta data Konrad Rudolph 05.10.2012 - 16:06
11

Puoi utilizzare zipinfo . È incluso nell'installazione predefinita di Ubuntu. Consulta la pagina di manuale per ulteriori informazioni.

Ad esempio, per cercare uno schema setup in un gruppo di file zip nella directory corrente, usa questo comando:

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
    
risposta data Anwar 05.10.2012 - 11:22
6

Per elencare i file in un archivio zip puoi usare il seguente comando.

unzip -l

Per grep un archivio compresso dovresti usare le utility di archivio compresso costruite 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 gli 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. È possibile reindirizzare l'out put 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
    
risposta data nelaaro 05.10.2012 - 11:35

Leggi altre domande sui tag