Рекурсивно стискати файли в каталозі та підкаталогах за допомогою інструмента «zip» командного рядка в Mac OS X та виключати .DS_Store файли з ВСІХ папок


10

Я намагаюся створити ZIP-файл за допомогою zipінструменту командного рядка , який постачається разом з терміналом Mac OS X. Я хочу рекурсивно стискати вміст поточної папки, але виключаючи .DS_Storeфайли. Я намагаюся з цим:

zip -r myarchive.zip . -x .DS_Store

У -x .DS_StoreВиключаючи .DS_Storeфайл в цій папці, але не в рекурсивно додаються вкладені папки. Як я також виключаю всі .DS_Storeфайли з ВСІХ папок?

Відповіді:


17

Додайте підстановку до опції виключення

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

Дякую за вашу відповідь. Це працює, але чому? :). Не могли б ви пояснити?
ОМА

У *розкриватися ні до чого або будь-якій частині шляху , як блискавка рекурсивно стискає файли і їх каталоги. Отже, ./.DS_Storeтоді ./*/.DS_Storeі так далі виключаються з архіву.
fd0

Ах, цікаво. Отже, підстановка працює інакше, ніж у світі Windows, де "* .DS_Store" означатиме "будь-який файл, який закінчується .DS_Store"
OMA,

1

Велика частина часу я хочу , щоб виключити всі приховані файли, такі як .DS_Storeабо .gitчи.gitignore

За допомогою однієї простої команди ви можете подбати про все це і стискати всі файли та підпапки рекурсивно

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

Або ще краще, створити функцію в zsh, щоб полегшити життя

open ~/.zshrc

Додайте наступний код у розділі псевдонімів

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

Перезавантажте конфігурацію zsh

source ~/.zshrc

Використовуйте так

zip-visible archive.zip folder

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.