Sådan udelades filer fra et postarkiv

Den nemmeste måde at ekskludere mange specifikke filer eller en gruppe af matchede filer fra et zip-arkiv på er at springe over det nemme zip-værktøj, der er indbygget i Mac OS Xs venlige brugergrænseflade, og vende om til kommandolinjen, hvor den kraftige zip-kommando ligger.

Dette er nyttigt for en million og en årsag, men den primære motivation for dette indlæg vedrører .DS_Store-filer, der bliver pakket sammen med zip arkiver, der er oprettet på en Mac, kun for at røre en anden maskine, som pakker ud filen, uanset om den er på en anden Mac, Windows PC eller Linux. Det sker med både det venlige zip-værktøj og kommandolinjen zip-hjælpeprogrammet som standard, og det er fordi zipping-værktøjets standardadfærd er at inkludere skjulte filer, uanset om de vises eller ej. Det er ikke nødvendigvis en dårlig ting, og i mange tilfælde vil det blive betragtet som nyttigt, men hvis du ikke vil have dem eller nogen anden fil for den sags skyld, vises i dine arkiver, så læs videre.

Undtagen filer fra et postarkiv

Grundlæggende om filudstødning, når du opretter et zip-arkiv, er centreret omkring -x-flag, som bruges til at udelukke filer fra arkivet, der matcher et bestemt navn eller mønster. Det er mest grundlæggende, det vil se sådan ud:

zip archive.zip files -x "ExcludeMe"

Betydning du kunne udelukke en enkelt fil, siger det hedder "Nothanks.jpg"

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

Lad os dække et par specifikke eksempler, hvor dette er nyttigt.

Ekskluder .DS_Store-filer fra Zip Archives

Dette forhindrer, at de typisk usynlige Mac-metadata .DS_Store-filer bliver inkluderet i et zip-arkiv, som er indbygget som standard:

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

Hvis mappen indeholder undermapper, vil du dog gerne bruge en anden variant af den pågældende kommando for at udelukke ds_store-filerne fra undermapper også:

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

Bemærk: Ikke alle skaller kræver, at citatene for denne kommando skal fungere korrekt, men i bash shell (standard for OS X) skal du bruge citatene til at udelukke med jokertegn og mønstre.

Ekskluder specifikke filtyper fra et postarkiv

Med jokertegn kan du også ekskludere alle filer af en bestemt type ved at fokusere på udvidelsen. For eksempel vil denne kommando zip en hel mappe, minus eventuelle .jpg-filer:

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

Det kan ændres for en bestemt filtypenavn eller et mønster, der matches i et filnavn.

Ekskluder .git eller .svn-mappen fra et postarkiv

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

Zip en mappe uden at medtage .svn-mappen:
zip -r zipped.zip directory -x "*.svn*"

Ekskluder alle skjulte filer fra et postarkiv

Da mønstre og jokertegn kan bruges, kan du også udelukke enhver eller alle usynlige filer og mapper, der er lavet ved at blive præfikset med en periode, uanset om det er en mappe som .svn eller en individuel fil som .bash_profile eller .htaccess.

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

Eller for at udelukke alle usynlige filer fra alle undermapper:

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

Skål til en kommenterer på Macworld Forums for den præcise syntaks på at udelukke disse filer fra undermapper også.

I sidste ende er det bare en anden grund til, at strømbrugerne hopper til Terminal for at oprette arkiver. Med kraftfulde funktioner som jokertyper, ekskludering og valgfri adgangskodebeskyttelse af lynlåse, er det bare mere udvalgt, og da det hele er inkluderet på Mac'en, behøver du ikke at downloade en anden app for at understøtte de avancerede funktioner.

Og ja, teknisk set, hvis du var fast besluttet på at blive i brugergrænsefladen, kunne du bruge Finder- og Spotlight-søgoperatører til at indsnævre indholdet af mapper i OS X, før du opretter et arkiv eller bare Vælg alt og manuelt Kommando + Klik på hver fil, der ikke skal indeholde, men det er virkelig ikke effektivt til store arkiveringsoperationer. Således vinder terminalen for lethed, og på trods af at den er centreret omkring kommandolinjen, er det virkelig ikke kompliceret, når man først lærer det grundlæggende.