Hur man utesluter filer från ett Zip-arkiv

Det enklaste sättet att utesluta många specifika filer eller en grupp matchade filer från ett zip-arkiv är att hoppa över det lätta zippverktyget som är inbyggt i Mac OS Xs vänliga användargränssnitt och vända sig till kommandoraden, där den kraftfulla zip-kommandot finns.

Det här är användbart för en miljon och en anledning, men den primära motivationen för det här inlägget gäller .DS_Store-filerna som kombineras med zip-arkiv som skapats på en Mac, bara för att röra upp en annan maskin som slår ut filen, oavsett om den är på en annan Mac, Windows PC eller Linux. Det händer med både det vänliga zip-verktyget och kommandoraden zip-verktyget som standard, och det beror på att zippningsverktyget standardbeteende är att inkludera dolda filer om de visas eller inte. Det är inte nödvändigtvis en dålig sak och i många fall skulle det anses vara användbart, men om du inte vill ha dem, eller någon annan fil för den delen, visas i dina arkiv, läs vidare.

Exklusive filer från ett postarkiv

Grunderna för filuteslutning när du skapar ett zip-arkiv är centrerad runt -x-flaggan, som används för att utesluta filer från arkivet som matchar ett visst namn eller mönster. Det är mest grundläggande, det kommer att se ut så här:

zip archive.zip files -x "ExcludeMe"

Det betyder att du kan utesluta en enda fil, säg att den heter "Nothanks.jpg"

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

Låt oss täcka några specifika exempel där det här är användbart.

Exkludera .DS_Store-filer från Zip Archives

Detta kommer att förhindra att de vanligtvis osynliga Mac-metadata .DS_Store-filerna ingår i ett zip-arkiv, som är inbäddade som standard:

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

Om katalogen innehåller underkataloger vill du dock använda en annan variant av det här kommandot för att utesluta ds_store-filerna från underkataloger också:

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

Obs! Alla skal inte kräva att citaten för detta kommando fungerar korrekt, men i bash-skalet (standard för OS X) måste du använda citat för att exkludera med jokertecken och mönster.

Exkludera specifika filtyper från ett zip-arkiv

Med jokertecken kan du också utesluta alla filer av en viss typ genom att fokusera på förlängningen. Till exempel kommer detta kommando zip en hel katalog, minus eventuella .jpg-filer:

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

Det kan ändras för en viss filtillägg eller ett mönster som matchas i ett filnamn.

Exkludera .git eller .svn-katalogen från ett postarkiv

Zip en katalog, minus. Git och dess innehåll:
zip -r zipdir.zip directorytozip -x "*.git*"

Zip en mapp, utan att inkludera .svn-katalogen:
zip -r zipped.zip directory -x "*.svn*"

Utesluta alla dolda filer från ett postarkiv

Eftersom mönster och jokertecken kan användas kan du också utesluta några eller alla osynliga filer och mappar som görs så att de är prefixade med en period, oavsett om det är en katalog som .svn eller en enskild fil som .bash_profile eller .htaccess.

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

Eller att utesluta alla osynliga filer från alla underkataloger:

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

Skål till en commenter på Macworld Forums för den exakta syntaxen om att utesluta de här filerna från underkataloger också.

I slutändan är det bara en annan anledning för kraftanvändare att hoppa till Terminal för att skapa arkiv. Med kraftfulla funktioner som jokertextsupport, uteslutning och valfritt lösenordsskydd för blixtlås, är det bara mer komplett och eftersom det allihop ingår på Mac behöver du inte ladda ner en annan app för att stödja de avancerade funktionerna.

Och ja, tekniskt om du var fast besluten att hålla dig kvar i användargränssnittet kan du använda sökoperatörer i Finder och Spotlight för att begränsa innehållet i mappar i OS X innan du skapar ett arkiv eller bara Välj alla och manuellt Kommando + Klicka på varje fil som inte ska inkluderas, men det är egentligen inte effektivt för stora arkiveringsoperationer. Således vinner terminalen för enkelhet, och trots att den är centrerad runt kommandoraden är det verkligen inte komplicerat när du läser grunderna.