Come elencare i file in una zip senza ulteriori informazioni nella riga di comando


37

Nella mia riga di comando bash, quando uso unzip -l test.zipottengo l'output in questo modo:

Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   810000  05-07-2014 15:09   file1.txt
   810000  05-07-2014 15:09   file2.txt
   810000  05-07-2014 15:09   file3.txt
---------                     -------
  2430000                     3 files

Ma sono interessato solo dalle righe che contengono i dettagli del file.

Ho provato a fare il filtraggio usando grep in questo modo:

unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"

Ma è lungo e soggetto a errori (ad es. Un nome di file in questo elenco verrà eliminato)

Esistono altre opzioni con unzip -l (ho controllato la pagina man di decompressione e non ne ho trovate) o un altro strumento per farlo?

Per me è importante non decomprimere realmente l'archivio ma solo cercare quali file sono all'interno.


La risposta accettata è molto meglio di questa; ma voglio sottolineare che qualsiasi cosa con multipli greppuò essere rifattorizzata in uno script Awk, di solito con una precisione molto migliorata. awk 'NR >3 { if (/^ *---/) exit 0; print }'taglierebbe le prime tre righe e il piè di pagina e sarebbe anche a portata di mano per estrarre facilmente solo il nome del file (suggerimento:) print substr($0, 29).
tripla il

Sì, sono totalmente d'accordo, è proprio per questo che faccio questa domanda specifica: avere una soluzione migliore e praticabile.
рüффп,

Risposte:


55
zipinfo -1 file.zip

O:

unzip -Z1 file.zip

Elencherebbe solo i file.

Se desideri ancora le informazioni extra per ciascun nome di file, puoi fare:

unzip -Zl file.zip | sed '1,2d;$d'

O:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

Oppure (supponendo GNU head):

unzip -l file.zip | tail -n +4 | head -n -2

grazie potente sed ... esattamente quello che volevo; Anche lo strumento zipinfo è interessante, non lo sapevo.
рüффп,

C'è un modo per ignorare le directory? unzip -Z1 zipfile.zipprodurrà: directory / e directory / file.extension (Nota: è probabile che i nomi di directory con., quindi l'aggiunta di a | grep .non funzioni)
Matt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.