Сжатие папок на Mac без .DS_Store


63

Есть ли способ избавиться от .DS_Store при сжатии папки на Mac?

Я работаю на Mac и отправляю работу клиентам в формате zip, но меня всегда спрашивают о папке .DS_Store внутри них. Это кажется неизбежным, если я не открою папку в Windows, не удалю .DS_Store и не сожму ее там. Это довольно большая проблема.

Есть ли легкие обходные пути?

Ответы:


108

Если вы не против прыгнуть в терминал, то это чертовски просто. Если вы находитесь в /Users/usernameвашем каталоге $ HOME и в нем есть подкаталог с именем foo, который вы хотите заархивировать, но игнорируете все файлы .DS_Store, сделайте следующее:

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

Чтобы интерпретировать это, мы запускаем исполняемый файл zip со следующими параметрами / аргументами:

  • -r для рекурсивного включения всех каталогов под целями, которые мы хотим заархивировать.
  • foo.zip имя создаваемого нами ZIP-архива
  • foo целевой каталог, который мы хотим заархивировать
  • -x "*.DS_Store" исключает все файлы, путь которых заканчивается строкой ".DS_Store"

Никакие глупые сторонние приложения не нужны, и вам вообще не нужно стирать ваши файлы .DS_Store - просто положитесь на все качества инструментов Unix, встроенные прямо в OSX / Darwin.


1
Это прекрасно, спасибо. Из интереса, как бы я исключил многолучевые окончания? Что-то вроде zip -r foo.zip foo -x "* .DS_Store, * .svn"?
Даниксд

5
Используйте аргумент -x дважды: zip -r foo.zip foo -x *.DS_Store -x *.svn*
кит

Как исключить Icon-файлы, которые OSX создает для пользовательских значков папок? У них есть новая строка или что-то подобное в конце имени файла.
Даниэль Бек

Я понятия не имею, как выглядят эти имена файлов, поэтому я не могу дать никакого реального руководства здесь.
Кит

1
@Daniel Beck - так что продолжайте использовать CleanArchiver и не угоняйте раздел комментариев чьего-то вопроса и принимаете ответ на вызов, уступающий решению, когда оно явно работает для оригинального плаката? Ответ на ваш вопрос, как ни странно, таков -x 'Icon?'. "?" символ в шаблоне выделения файла означает «соответствовать одному символу подстановки», поэтому он будет совпадать независимо от того, что означает «?» на самом деле. Вы можете исключить произвольные файлы любого вида, просто добавив больше аргументов -x. zipочень гибкий. Как вы думаете, что эти сторонние утилиты действительно используют за кулисами?
кит

5

Вы можете создать приложение автоматизатора, которое принимает папку в качестве входных данных и создает zip-файл содержимого папки без лишних усилий.

Сохраните это приложение в / Users / you / Applications, а затем перетащите его на панель инструментов поиска. Затем вы можете перетащить папки в приложение из любого окна поиска.

Создать приложение для автоматизации

Добавьте шаг « получить выбранные элементы поиска ». А также добавьте шаг ' run shell script ' с опцией ' Pass input ', установленной на 'в качестве аргументов '.

Добавить шаги рабочего процесса

Сценарий:

name=("$@")
cd "$name"
zipFileName=`basename "$name"`
zip "${zipFileName}.zip" -r ./* \
    -x */.DS_Store \
    -x */.git \
    -x */.svn \
    -x */.idea \
    -X */__MACOSX
mv "${zipFileName}.zip" ../

Принимает папку в качестве входных данных и создает zip-файл с именем папки.


Это здорово! Как я могу изменить его, чтобы я мог перетащить несколько файлов, выходное имя должно содержать dirname;
разбить

2
@ unbreak, я не знаю. У меня больше нет Mac ;-)
Michiel Roos,

3

Я не думаю, что есть способ сделать это по умолчанию, но я могу придумать два способа добиться того, чего вы хотите.

Во-первых, я нашел бесплатное приложение под названием FolderWasher . Удалите папку в приложении, и она удалит файлы .DS_Store и заархивирует ее для вас.

В качестве альтернативы (и, возможно, лучше, чем программное обеспечение сторонних производителей), вы можете использовать Automator для очистки архива после создания. На самом деле уже есть действие, созданное для этого. Это всего лишь один дополнительный шаг, и вы можете перетащить действие в Finder, чтобы его было легко найти.


3

Если вы уже создали zip-архив (или хотите простой способ удаления .DS_Store после создания zip-архива), это удалит все файлы .DS_Store по любому пути в zip-архиве:

zip -d archive.zip "*/*.DS_Store"

Ответ китая все еще определенно лучший, потому что его можно назвать псевдонимом и забыть о нем. В моем случае я создал zip из утилиты архивирования, а затем понял, что я должен удалить их.


2

Откройте терминал (/Applications/Utilies/Terminal.app) и выполните следующую команду, чтобы показать скрытые файлы:

defaults write com.apple.finder AppleShowAllFiles TRUE && killall Finder

Чтобы скрыть скрытые файлы, просто запустите:

defaults write com.apple.finder AppleShowAllFiles FALSE && killall Finder

Вы можете удалять файлы .DS_Store, как и любые другие файлы, не причиняя никакого вреда вашему каталогу. Как указано в википедии, «DS_Store (Desktop Services Store) - это скрытый файл, созданный операционной системой Mac OS X от Apple Inc. для хранения пользовательских атрибутов папки, таких как расположение значков или выбор фонового изображения».



2

Если вы запустите это в Терминале, это остановит их автоматическое создание при создании папок, вы можете включить его снова, если захотите.

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Затем вы можете использовать пример @Penang (выше), чтобы убедиться, что файлы больше не создаются. Я должен был загрузить файл почтового индекса, и у каждой папки был тот файл в этом, и это помогло мне.


0

Существует объяснение того, что они из себя представляют, и как их удалить на справочном сайте Adobe во всех местах.

Они представляют собой скрытый файл, используемый для хранения конфигурации папки (например, положение значка, цвет, фон папки и положение прокрутки. К сожалению, похоже, нет способа остановить их постоянное создание, хотя Apple признает, что они могут вызвать проблемы для некоторые пользователи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.