1 14/05/2026 8 min

Se devi controllare un archivio ZIP su Linux senza scompattarlo, la strada giusta dipende da quello che vuoi ottenere: vedere l’elenco dei file, leggere un singolo documento, cercare un nome preciso o verificare che l’archivio sia sano. Non serve estrarre tutto in una directory temporanea solo per dare un’occhiata al contenuto: con gli strumenti giusti risparmi tempo, spazio su disco e rischio di sovrascrivere file già presenti.

Qui sotto trovi quattro comandi utili, tutti orientati a un uso pratico da shell. Sono adatti a scenari comuni da sysadmin e supporto: download ricevuto via mail, pacchetto legacy, backup compresso, export di applicazioni o allegato che va ispezionato prima di aprire il ticket o procedere con un restore.

1) Elencare il contenuto dello ZIP con unzip -l

Il comando più immediato è unzip -l. Mostra i file presenti nell’archivio, con dimensione, data e ora. È il primo controllo da fare quando vuoi capire se dentro c’è davvero quello che ti aspetti.

Uso tipico:

unzip -l archivio.zip

Output atteso: una tabella con numero di file, dimensioni e nomi dei percorsi interni. Se l’archivio contiene directory annidate, le vedrai già nella lista. Questo è utile anche per individuare strutture strane, come un doppio livello di cartelle generato da un export fatto male.

Se vuoi una vista più compatta, puoi filtrare con grep:

unzip -l archivio.zip | grep -i 'report'

In questo modo verifichi subito se il file o la directory che cerchi è presente. Per archivi grandi, è spesso il metodo più veloce per ridurre il rumore senza toccare il contenuto.

Se il comando restituisce errori del tipo cannot find or open, il problema non è il contenuto ma il path o i permessi sul file. Prima di andare oltre, controlla con ls -lh archivio.zip e, se serve, con file archivio.zip per confermare che sia davvero un ZIP e non un file rinominato male.

2) Leggere un singolo file senza estrarre tutto con unzip -p

Quando devi vedere il contenuto di un file specifico, unzip -p è il comando più comodo. Estrae il file su stdout invece che su disco, quindi puoi leggerlo, filtrarlo o passarne il contenuto ad altri strumenti senza creare file temporanei.

Esempio base:

unzip -p archivio.zip documenti/readme.txt

Questo stampa il file direttamente a terminale. Se il file è testo, puoi leggerlo subito. Se è troppo lungo, conviene usare less:

unzip -p archivio.zip documenti/readme.txt | less

Il vantaggio operativo è chiaro: non tocchi il filesystem, non sporchi directory temporanee e non rischi di sovrascrivere file con lo stesso nome. È il comando giusto quando stai facendo triage su archivi ricevuti da terzi o su backup da verificare prima del restore.

Puoi anche usarlo per ispezionare file di configurazione o log compressi. Per esempio:

unzip -p backup.zip var/log/app.log | tail -n 50

Qui leggi solo l’ultima parte del log, senza estrarre tutto il backup. È una combinazione pratica quando vuoi capire rapidamente se c’è un errore ricorrente, un crash o una sequenza di eventi utile per la diagnosi.

Attenzione a un dettaglio: unzip -p non preserva metadati come permessi o ownership, perché non sta facendo un’estrazione reale. Per il solo contenuto testuale va bene; se devi ripristinare un file, allora devi passare all’estrazione selettiva con controllo del path di destinazione.

3) Cercare file o pattern con zipinfo e grep

Se l’archivio è grande o la struttura è complessa, zipinfo è spesso più leggibile di unzip -l. Ti permette di vedere i metadati dell’archivio e, combinato con grep, di cercare un nome preciso o una parte del percorso interno.

zipinfo archivio.zip

Per filtrare un nome:

zipinfo archivio.zip | grep -i 'config'

Se vuoi limitarti ai file con una certa estensione, per esempio XML o CSV, puoi usare il pattern giusto:

zipinfo archivio.zip | grep -E '\.xml$|\.csv$'

Il punto non è solo “trovare un file”, ma capire come è impacchettato l’archivio. Molti problemi nascono da percorsi interni inattesi: un export può contenere file dentro una cartella madre, oppure un backup può includere percorsi assoluti o profondi che complicano il restore.

In pratica, questo controllo ti aiuta a rispondere a tre domande molto concrete:

  1. Il file che cerco esiste davvero nell’archivio?
  2. Il path interno è quello che mi aspetto o c’è un livello di directory in più?
  3. Ci sono nomi duplicati o file con estensioni diverse da quelle attese?

Se lavori spesso con archivi forniti da utenti o da sistemi esterni, questa verifica evita errori classici: aprire il file sbagliato, estrarre nella directory sbagliata o credere che il backup sia completo quando in realtà manca il payload principale.

4) Verificare integrità e leggibilità con unzip -t

Leggere i nomi dei file non basta. Un archivio può sembrare corretto ma contenere entry corrotte, troncate o con CRC errato. Per questo esiste unzip -t, che esegue un test di integrità senza estrarre i file.

unzip -t archivio.zip

Se tutto va bene, vedrai una serie di messaggi di test seguiti da un riepilogo positivo. Se invece c’è corruzione, il comando te lo segnala sul file o sulla entry problematica. È il controllo da fare prima di fidarti di un backup scaricato, copiato via rete o archiviato su storage instabile.

Questo passaggio è particolarmente utile quando il file ZIP è stato trasferito via FTP, mail gateway, object storage o strumenti che possono interrompere il trasferimento. Un archivio che si apre ma fallisce in lettura parziale è peggio di un errore immediato, perché può farti perdere tempo su una base già compromessa.

Se unzip -t segnala problemi, non forzare l’estrazione completa sperando che “vada comunque”. La scelta corretta è isolare il danno: controlla dimensione del file con ls -lh, confronta hash se disponibile e, se il file arriva da un sistema remoto, ripeti il trasferimento prima di procedere.

Quando usare 7z l al posto di unzip

Su molte distribuzioni Linux unzip basta e avanza, ma in alcuni casi 7z offre una vista più comoda o più tollerante con archivi prodotti da software non standard. Se hai installato p7zip o 7zip, puoi listare i contenuti con:

7z l archivio.zip

Il vantaggio è che 7z spesso mostra informazioni aggiuntive e si comporta bene con archivi “strani” o con compressioni ibride. In ambienti misti, dove gli ZIP arrivano da Windows, macOS, appliance o applicazioni proprietarie, vale la pena tenerlo come secondo strumento di verifica.

Per leggere un file specifico senza estrarre tutto, puoi usare anche:

7z e -so archivio.zip documenti/readme.txt | less

Il parametro -so manda l’output su stdout, quindi il comportamento è simile a unzip -p. In pratica hai un’alternativa utile quando unzip fallisce su un archivio non perfettamente conforme o quando vuoi confrontare il comportamento dei due tool.

Uso pratico: triage rapido di un ZIP sospetto

Un flusso operativo semplice, da usare quasi sempre, è questo:

  1. Verifica il tipo di file con file archivio.zip.
  2. Lista il contenuto con unzip -l archivio.zip o zipinfo archivio.zip.
  3. Controlla l’integrità con unzip -t archivio.zip.
  4. Leggi il file utile con unzip -p oppure 7z e -so.

Questo schema funziona bene perché separa i problemi: identificazione, struttura, integrità, lettura. Se qualcosa non torna, capisci subito dove intervenire senza passare all’estrazione completa, che è la scelta più costosa e spesso la meno prudente.

Un esempio concreto: ricevi un backup site-backup.zip e vuoi sapere se contiene il dump del database e alcuni file di configurazione. Puoi fare così:

file site-backup.zip
unzip -l site-backup.zip | grep -Ei 'mysql|mariadb|config|\.sql$'
unzip -t site-backup.zip

Se trovi il dump, puoi leggerne l’intestazione senza estrarlo:

unzip -p site-backup.zip backup/db.sql | head -n 20

Con poche righe capisci se il backup è plausibile, se il nome del file corrisponde a quello atteso e se il contenuto sembra integro. È un controllo molto più utile di un’estrazione cieca in una directory temporanea.

Problemi comuni e segnali da non ignorare

Il primo errore classico è confondere un ZIP con un file qualsiasi rinominato con estensione .zip. Se file non lo identifica come archivio compresso, fermati lì: non è un problema di comando, è il file che non è quello che dice di essere.

Il secondo errore è ignorare i path interni. Un archivio può contenere site/site/index.php invece di site/index.php, e questo cambia completamente il risultato di un restore o di un controllo rapido. Per questo la lista dei contenuti non è un passaggio opzionale: è parte della diagnosi.

Il terzo errore è fidarsi di una sola lettura. Se devi prendere una decisione operativa, incrocia almeno due segnali: lista contenuti e test integrità, oppure lista contenuti e lettura di un file chiave. In ambienti di produzione o su dati sensibili, questa doppia verifica riduce gli errori banali che poi diventano incidenti.

Comandi rapidi da tenere a portata di mano

Se vuoi una mini-cassetta degli attrezzi, questi sono i quattro comandi da ricordare:

unzip -l archivio.zip
unzip -p archivio.zip percorso/file.txt
zipinfo archivio.zip
unzip -t archivio.zip

Il criterio di scelta è semplice: -l per vedere, -p per leggere, zipinfo per analizzare meglio la struttura, -t per verificare la salute dell’archivio. Se serve un’alternativa, 7z l e 7z e -so coprono buona parte dei casi in cui unzip non basta.

In pratica, non devi estrarre uno ZIP per capire cosa contiene. Su Linux hai già tutto quello che serve per ispezionarlo in modo rapido, pulito e reversibile. Il punto è scegliere il comando giusto in base all’obiettivo: elenco, anteprima, ricerca o integrità. Quando lo fai con metodo, risparmi tempo e riduci il rischio di trasformare un controllo banale in una modifica inutile sul filesystem.