Come escludere i file da un archivio zip

Il modo più semplice per escludere molti file specifici o un gruppo di file corrispondenti da un archivio zip consiste nel saltare l'utilità di zipping facile incorporata nell'interfaccia utente intuitiva di Mac OS X e passare alla riga di comando, dove risiede il potente comando zip.

Questo è utile per un milione e una ragione, ma la motivazione principale per questo post riguarda i file .DS_Store che vengono raggruppati insieme agli archivi zip creati su un Mac, solo per ingombrare un altro computer che decomprime il file, sia che si tratti di un altro Mac, PC Windows o Linux. Ciò accade sia per lo strumento zip intuitivo che per l'utilità zip della riga di comando per impostazione predefinita, ed è perché il comportamento predefinito degli strumenti di zipping è quello di includere i file nascosti, indipendentemente dal fatto che vengano visualizzati o meno. Non è necessariamente una cosa cattiva e in molti casi sarebbe considerato utile, ma se non li vuoi, o qualsiasi altro file per quella materia, che compare nei tuoi archivi, allora continua a leggere.

Esclusione di file da un archivio zip

Le basi dell'esclusione dei file durante la creazione di un archivio zip sono centrate attorno al flag -x, che viene utilizzato per escludere i file dall'archivio che corrispondono a un nome o modello specifico. Al suo livello più semplice, assomiglierà a questo:

zip archive.zip files -x "ExcludeMe"

Significa che potresti escludere un singolo file, diciamo che si chiama "Nothanks.jpg"

zip archive.zip images/ -x "Nothanks.jpg"

Esaminiamo alcuni esempi specifici in cui ciò è utile.

Escludere i file .DS_Store dagli archivi Zip

Ciò impedirà che i file .DS_Store dei metadati Mac, in genere invisibili, vengano inclusi in un archivio zip, i quali sono raggruppati per impostazione predefinita:

zip -r archivename.zip archivedirectory -x "*.DS_Store"

Se la directory include le sottodirectory, tuttavia, ti consigliamo di utilizzare un'altra variante di quel comando per escludere anche i file ds_store dalle sottodirectory:

zip -r archive.zip directory -x "*/\.DS_Store"

Nota: non tutte le shell richiedono che le virgolette per questo comando funzionino correttamente, ma nella shell bash (l'impostazione predefinita per OS X) sarà necessario utilizzare le virgolette per escludere con caratteri jolly e pattern.

Escludere tipi di file specifici da un archivio zip

Con i caratteri jolly, puoi anche escludere tutti i file di un certo tipo concentrandoti sull'estensione. Ad esempio, questo comando comprimerà un'intera directory, meno eventuali file .jpg:

zip -r archive.zip directory -x "*.jpg"

Questo potrebbe essere modificato per qualsiasi specifica estensione di file o pattern abbinato in un nome di file.

Escludere la directory .git o .svn da un archivio zip

Zip una directory, meno .git e il suo contenuto:
zip -r zipdir.zip directorytozip -x "*.git*"

Zip una cartella, senza includere la directory .svn:
zip -r zipped.zip directory -x "*.svn*"

Escludi tutti i file nascosti da un archivio zip

Poiché è possibile utilizzare modelli e caratteri jolly, è possibile escludere alcuni o tutti i file e le cartelle invisibili creati in modo tale da essere preceduti da un punto, che si tratti di una directory come .svn o di un singolo file come .bash_profile o .htaccess.

zip -r archivename.zip directorytozip -x "*.*"

O per escludere tutti i file invisibili da tutte le sottodirectory:

zip -r archive.zip directory -x "*/\.*"

Saluti a un commentatore dei forum Macworld per la precisa sintassi sull'esclusione di quei file dalle sottodirectory.

In definitiva, questo è solo un altro motivo per gli utenti esperti di saltare al Terminal per la creazione di archivi. Con potenti funzionalità come il supporto di caratteri jolly, l'esclusione e la protezione con password opzionale delle cerniere, è solo più ricco di funzionalità e, poiché è tutto incluso nel Mac, non è necessario scaricare un'altra app per supportare le funzionalità avanzate.

E sì, tecnicamente se fossi determinato a rimanere nell'interfaccia utente, potresti utilizzare gli operatori di ricerca di Finder e Spotlight per restringere il contenuto di una cartella in OS X prima di creare un archivio, o semplicemente Seleziona tutto e manualmente Comando + Fare clic su ogni file per non includerlo, ma questo non è davvero efficiente per le grandi operazioni di archiviazione. Quindi, il terminale vince per facilità, e nonostante sia centrato attorno alla linea di comando, non è davvero complicato una volta apprese le basi.