Стиснення папок на 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"

Жодних додатків Google для сторонніх розробників, і не потрібно взагалі виносити свої файли .DS_Store - просто покладайтесь на всі добрі інструменти Unix, вбудовані прямо в OSX / Darwin.


1
Це ідеальне спасибі. Як я можу виключати закінчення кількох шляхів із інтересу? Щось на зразок zip -r foo.zip foo -x "* .DS_Store, * .svn"?
danixd

5
Використовуйте аргумент -x двічі: zip -r foo.zip foo -x *.DS_Store -x *.svn*
whaley

Як виключаєте файли Icon-файлів, створені OSX для піктограм власної папки? Вони мають новий рядок або щось подібне в кінці імені файлу.
Даніель Бек

Я не маю поняття, як виглядають ці файли, тому я не можу дати тут ніяких реальних вказівок.
кит

1
@Daniel Beck - тож продовжуйте використовувати CleanArchiver і не захоплюйте розділ коментарів чужого питання і прийняв відповідь на виклик, рішення не поступається, коли воно, очевидно, працює на оригінальному плакаті? Відповідь на ваше запитання, напрочуд, досить -x 'Icon?'. "?" символ у шаблоні глобулювання файлу означає "відповідати одному символу підстановки", тож він буде відповідати незалежно від того, що означає "?" насправді є. Ви можете виключити спеціальні файли будь-якого типу, просто додавши більше -x аргументів. zipдуже гнучка. Що ви гадаєте, що ці утиліти третіх сторін справді використовують поза кадром?
кит

5

Ви можете створити додаток автоматизатора, який приймає папку як вхідний і створює поштовий файл вмісту папки без жодної суворості.

Зберігайте цю програму в / Користувачі / Ви / Програми, а потім перетягніть її на панель інструментів пошуку. Потім ви можете перетягнути папки на додаток із будь-якого вікна пошуку.

Створіть додаток автоматизатора

Додати крок " отримати вибрані елементи пошуку ". А також додайте крок « запустити скрипт оболонки » з параметром « Передати вхід », встановленому на « як аргументи ».

Додайте кроки робочого процесу

Сценарій:

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

Приймає папку як вхідний і створює zipfile з назвою папки.


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

2
@unbreak я не знаю. У мене більше немає мака ;-)
Мічіель Роос

3

Я не думаю, що існує спосіб зробити це за замовчуванням, але я можу придумати два способи досягти того, що ти хочеш.

По-перше, я знайшов безкоштовний додаток під назвою FolderWasher . Запустіть папку в додаток, і вона видалить .DS_Store файли та скопіює її для вас.

Крім того, (і, можливо, краще, ніж програмне забезпечення сторонніх розробників), ви можете використовувати Automator для очищення архіву після створення. Насправді для цього вже створена дія . Це лише один додатковий крок, і ви можете перетягнути дію до Finder, щоб його було легко знайти.


3

Якщо ви вже створили zip-архів (або хочете простий спосіб видалення .DS_Store створення zip-повідомлення), це видалить усі .DS_Store файли на будь-якому шляху в zip-архіві:

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

Відповідь китлі й досі, безумовно, найкраща, тому що про неї можна забути і забути. У моєму випадку я створив блискавку з утиліти Archive, потім зрозумів, що я повинен їх видалити.


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 (Магазин настільних служб) - це прихований файл, створений операційною системою Mac OS X Apple Apple Inc. для зберігання спеціальних атрибутів папки, таких як положення піктограм або вибір фонового зображення".



2

Якщо запустити це в Терміналі, це зупинить їх автоматично генерується під час створення папок, ви можете увімкнути його, якщо ви захочете.

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Потім ви можете використовувати приклад @Penang (вище), щоб перевірити, чи файли більше не створюються. Мені довелося завантажити zip-файл, і кожна папка мала цей файл у ньому, і це мені допомогло.


0

Існує пояснення, що вони є, і як їх видалити на веб-сайті довідки Adobe .

Вони є прихованим файлом, який використовується для зберігання конфігурації папки (наприклад, положення піктограми, колір, фон папки та положення прокрутки. На жаль, здається, немає можливості зупинити їх створення постійно, хоча яблуко визнає, що вони можуть спричинити проблеми для деякі користувачі.

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