Comprimi in modo ricorsivo i file in una directory e nelle sottodirectory usando lo strumento "zip" della riga di comando in Mac OS X ed escludi i file .DS_Store da TUTTE le sottocartelle


10

Sto cercando di creare un file ZIP utilizzando lo zipstrumento da riga di comando fornito con il terminale Mac OS X. Voglio comprimere ricorsivamente il contenuto della cartella corrente ma escludendo i .DS_Storefile. Sto provando con questo:

zip -r myarchive.zip . -x .DS_Store

Le -x .DS_Storeesclude il .DS_Storefile nella cartella corrente, ma non nelle sottocartelle in modo ricorsivo aggiunto. Come posso escludere tutti i .DS_Storefile da TUTTE le sottocartelle?

Risposte:


17

Aggiungi un carattere jolly all'opzione di esclusione

zip -r myarchive.zip . -x "*.DS_Store"

Grazie per la tua risposta. Funziona, ma perché? :). Potresti spiegare per favore?
OMA,

Si *espande in nulla o in qualsiasi parte di un percorso poiché zip comprime ricorsivamente i file e le loro directory. Quindi, ./.DS_Storequindi ./*/.DS_Storee così via sono esclusi dall'archivio.
fd0,

Ah, interessante. Quindi il carattere jolly funziona in modo diverso rispetto al mondo Windows, dove "* .DS_Store" significherebbe semplicemente "qualsiasi file che termina con .DS_Store"
OMA,

1

Il più delle volte voglio escludere tutti i file nascosti, come .DS_Storeo .gito.gitignore

Con un semplice comando puoi occuparti di tutto ciò e comprimere ricorsivamente tutti i file e le sottocartelle

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

O ancora meglio, crea una funzione in zsh per semplificare la vita

open ~/.zshrc

Aggiungi il seguente codice nella sezione dei tuoi alias

function zip-visible(){
    zip -r $1 $2 -X -x "*/\.*"
}

Ricarica la configurazione di zsh

source ~/.zshrc

Usa così

zip-visible archive.zip folder

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.