Hvordan ekskludere filer fra et postarkiv

Den enkleste måten å ekskludere mange bestemte filer eller en gruppe av matchede filer fra et zip-arkiv, er å hoppe over det enkle zipping-verktøyet som er bygd inn i Mac OS Xs vennlige brukergrensesnitt og vende seg til kommandolinjen, der den kraftige zip-kommandoen ligger.

Dette er nyttig for en million og en grunn, men den primære motivasjonen for dette innlegget gjelder for .DS_Store-filene som blir samlet sammen med zip-arkiver opprettet på en Mac, bare for å rote opp en annen maskin som pakker ut filen, enten den er på en annen Mac, Windows PC eller Linux. Det skjer med både det vennlige zip-verktøyet og kommandolinjen zip-verktøyet som standard, og det er fordi zipping-verktøyets standardadferd er å inkludere skjulte filer om de vises eller ikke. Det er ikke nødvendigvis en dårlig ting, og i mange tilfeller vil det bli ansett som nyttig, men hvis du ikke vil ha dem, eller en annen fil for den saks skyld, dukker opp i arkivene dine, så les videre.

Ekskluderer filer fra et postarkiv

Grunnleggende om filutestenging når du oppretter et zip-arkiv, er sentrert rundt -x-flagget, som brukes til å ekskludere filer fra arkivet som samsvarer med et bestemt navn eller mønster. På det mest grunnleggende, vil det se slik ut:

zip archive.zip files -x "ExcludeMe"

Betydning du kan utelukke en enkelt fil, si at den heter "Nothanks.jpg"

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

La oss dekke noen få konkrete eksempler der dette er nyttig.

Ekskluder .DS_Store-filer fra Zip Archives

Dette forhindrer at de vanligvis usynlige Mac-metadataene .DS_Store-filer blir inkludert i et zip-arkiv, som er samlet i standard:

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

Hvis katalogen inneholder underkataloger, vil du imidlertid bruke en annen variant av den kommandoen for å ekskludere ds_store-filene fra underkataloger også:

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

Merk: ikke alle skall krever at sitatene for denne kommandoen skal fungere skikkelig, men i bash-skallet (standard for OS X) må du bruke sitatene for å ekskludere med jokertegn og mønstre.

Unntatt bestemte filtyper fra et postarkiv

Med jokertegn kan du også ekskludere alle filer av en bestemt type ved å fokusere på utvidelsen. For eksempel vil denne kommandoen zip en hel katalog, minus eventuelle .jpg-filer:

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

Det kan endres for en bestemt filtype eller et mønster som er matchet i et filnavn.

Ekskluder .git eller .svn-katalogen fra et postarkiv

Zip en katalog, minus. Git og dens innhold:
zip -r zipdir.zip directorytozip -x "*.git*"

Zip en mappe, uten å inkludere .svn-katalogen:
zip -r zipped.zip directory -x "*.svn*"

Ekskluder alle skjulte filer fra et postarkiv

Siden mønstre og jokertegn kan brukes, kan du også ekskludere noen eller alle usynlige filer og mapper som er laget slik at de blir prefikset med en periode, enten det er en katalog som .svn eller en individuell fil som .bash_profile eller .htaccess.

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

Eller å ekskludere alle usynlige filer fra alle underkataloger:

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

Skål til en kommenterer på Macworld Forums for den nøyaktige syntaksen på å ekskludere disse filene fra underkataloger også.

Til slutt er dette bare en annen grunn for at strømbrukere skal hoppe til Terminal for å lage arkiver. Med kraftige funksjoner som jokertupport, ekskludering og valgfri passordbeskyttelse av glidelåser, er den bare mer fullverdig, og siden det er alt inkludert på Mac, trenger du ikke å laste ned en annen app for å støtte de avanserte funksjonene.

Og ja, teknisk sett hvis du var fast bestemt på å være i brukergrensesnittet, kan du bruke Finder og Spotlight-søk operatører til å begrense innholdet i mappene i OS X før du oppretter et arkiv, eller bare Velg alt og manuelt Kommando + Klikk på hver fil som ikke skal inkluderes, men det er egentlig ikke effektivt for store arkiveringsoperasjoner. Dermed vinner terminalen for letthet, og til tross for at den er sentrert rundt kommandolinjen, er det egentlig ikke komplisert når du lærer det grunnleggende.