Le basi dell'esclusione dei file durante la creazione di un archivio zip sono centrate attorno al -x
flag, che viene utilizzato per escludere i file dall'archivio che corrispondono a un nome o modello specifico. Al massimo, sembrerà così:
zip archive.zip files -x "ExcludeMe"
Ciò significa che potresti escludere un singolo file, ad esempio il nome "Nothanks.jpg"
zip archive.zip images/ -x "Nothanks.jpg"
Copriamo alcuni esempi specifici in cui questo è utile.
Escludere i file .DS_Store dagli archivi zip
Ciò impedirà che i .DS_Store
file di metadati Mac normalmente invisibili vengano inclusi in un archivio zip, che sono raggruppati per impostazione predefinita:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Se la directory include 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 citazioni per questo comando funzionino correttamente, ma nella shell bash (impostazione predefinita per OS X) sarà necessario utilizzare le virgolette per l'esclusione con caratteri jolly e motivi.
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 tutti i .jpg
file:
zip -r archive.zip directory -x "*.jpg"
Che potrebbe essere modificato per qualsiasi specifica estensione o modello di file abbinato a un nome file.
Escludere la directory .git o .svn da un archivio zip
Comprimi una directory, meno .git
e il suo contenuto:
zip -r zipdir.zip directorytozip -x "*.git*"
Comprimi una cartella, senza includere la .svn
directory:
zip -r zipped.zip directory -x "*.svn*"
Escludere tutti i file nascosti da un archivio zip
Poiché è possibile utilizzare modelli e caratteri jolly, è possibile anche escludere uno o tutti i file e le cartelle invisibili creati con il prefisso di un punto, che si tratti di una directory simile .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 "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) è più lungo del previsto, ma funziona bene. Sono incluse anche le sottodirectory, quindi +1 e una risposta accettata :-)