Kompresowanie folderów na komputerze Mac bez sklepu .DS_Store

63

Czy można zrezygnować z .DS_Store podczas kompresji folderu na komputerze Mac?

Pracuję na komputerze Mac i wysyłam pracę do klientów w formacie zip, ale zawsze dostaję zapytanie w folderze .DS_Store w nich zawartym. Wydaje się to nieuniknione, chyba że otworzę folder w systemie Windows, a następnie usunę .DS_Store i tam go skompresuję. To dość duży problem.

Czy są jakieś łatwe obejścia?

Danixd
źródło

Odpowiedzi:

108

Jeśli nie masz nic przeciwko zeskakiwaniu do terminalu, to jest do cholery łatwe. Jeśli jesteś w /Users/username, który jest katalogiem $ HOME i istnieje podkatalog o nazwie foo, który chcesz skompresować, ale zignoruj ​​wszystkie pliki .DS_Store, wykonaj następujące czynności:

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

Aby to zinterpretować, uruchamiamy plik zip z następującymi parametrami / argumentami:

  • -r za rekurencyjne uwzględnianie wszystkich katalogów poniżej celów, które chcemy spakować.
  • foo.zip to nazwa tworzonego przez nas archiwum zip
  • foo to katalog docelowy, który chcemy skompresować
  • -x "*.DS_Store" wyklucza wszystkie pliki, których ścieżka kończy się ciągiem „.DS_Store”

Żadne głupie aplikacje innych firm nie są potrzebne ani wcale nie trzeba niszczyć plików .DS_Store - wystarczy polegać na wszystkich zaletach narzędzia unix wbudowanych bezpośrednio w OSX / Darwin.

wieloryb
źródło
1
To idealne dzięki. W jaki sposób mogę wykluczyć zakończenia wielościeżkowe? Coś takiego jak zip -r foo.zip foo -x "* .DS_Store, * .svn"?
danixd
5
Użyj argumentu -x dwa razy: zip -r foo.zip foo -x *.DS_Store -x *.svn*
whaley
Jak wykluczyć pliki ikon tworzone przez OSX dla niestandardowych ikon folderów? Mają nowy wiersz lub coś takiego na końcu nazwy pliku.
Daniel Beck
Nie mam pojęcia, jak wyglądają te nazwy plików, więc nie mogę tutaj podać żadnych prawdziwych wskazówek.
whaley
1
@Daniel Beck - więc nadal używaj CleanArchiver i nie przejmuj się sekcją komentarza czyjegoś pytania i zaakceptowałeś odpowiedź na wezwanie gorszego rozwiązania, gdy oczywiście działa ono na oryginalny plakat? O dziwo, odpowiedź na twoje pytanie brzmi -x 'Icon?'. „?” znak we wzorcu globowania pliku oznacza „dopasuj pojedynczy znak wieloznaczny”, więc będzie pasował niezależnie od tego, co „?” naprawdę jest. Możesz wykluczyć pliki ad-hoc dowolnego rodzaju, dodając więcej argumentów -x. zipjest bardzo elastyczny. Jak myślisz, co te zewnętrzne narzędzia naprawdę wykorzystują za kulisami?
whaley
5

Możesz utworzyć aplikację automatyzującą, która akceptuje folder jako dane wejściowe i tworzy plik zip z zawartością folderu bez żadnych cruft.

Zapisz tę aplikację w / Users / you / Applications, a następnie przeciągnij ją na pasek narzędzi wyszukiwarki. Następnie możesz przeciągać foldery do aplikacji z dowolnego okna wyszukiwarki.

Utwórz aplikację automatyzującą

Dodaj krok „ pobierz wybrane elementy wyszukiwarki ”. Dodaj także krok „ uruchom skrypt powłoki ” z opcją „ Przekaż dane wejściowe ” ustawioną na „ jako argumenty ”.

Dodaj kroki przepływu pracy

Scenariusz:

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

Akceptuje folder jako dane wejściowe i tworzy plik zip z nazwą folderu.

Michiel Roos
źródło
Wspaniale! Jak mogę go zmodyfikować, aby przeciągać wiele plików, nazwa wyjściowa powinna zawierać nazwę katalogu;
Unbreak
2
@unbreak Nie wiem. Nie mam już komputera Mac ;-)
Michiel Roos
3

Nie sądzę, że istnieje sposób, aby to zrobić domyślnie, ale są dwa sposoby na osiągnięcie tego, co chcesz.

Po pierwsze znalazłem bezpłatną aplikację o nazwie FolderWasher . Upuść folder w aplikacji, a on usunie pliki .DS_Store i spakuje go za Ciebie.

Alternatywnie (i potencjalnie lepsze niż oprogramowanie innych firm) możesz użyć Automatora do wyczyszczenia archiwum po utworzeniu. W tym celu została już utworzona akcja . To tylko jeden dodatkowy krok i możesz przeciągnąć akcję do Findera, aby łatwo było ją znaleźć.

Delameko
źródło
3

Jeśli już utworzyłeś archiwum zip (lub chcesz w prosty sposób usunąć .DS_Store post zip zip), spowoduje to usunięcie wszystkich plików .DS_Store z dowolnej ścieżki w archiwum zip:

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

odpowiedź whaleya jest zdecydowanie najlepsza, ponieważ można ją zmienić i zapomnieć. W moim przypadku utworzyłem zip z Archive Utility, a potem zdałem sobie sprawę, że powinienem je usunąć.

James Taylor
źródło
2

Otwórz Terminal (/Applications/Utilies/Terminal.app) i uruchom następujące polecenie, aby wyświetlić ukryte pliki:

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

Aby ukryć ukryte pliki, po prostu uruchom:

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

Możesz usunąć pliki .DS_Store, tak jak wszystkie inne pliki, nie powodując szkody w katalogu. Jak stwierdzono na wikipedii, „DS_Store (Desktop Services Store) to ukryty plik stworzony przez system operacyjny Apple Inc. Mac OS X do przechowywania niestandardowych atrybutów folderu, takich jak położenie ikon lub wybór obrazu tła”.

Penang
źródło
2

Użyj CleanArchiver, aby utworzyć te archiwa. W ten sposób nie musisz niszczyć preferencji folderów.

Daniel Beck
źródło
2

Jeśli uruchomisz to w Terminalu, zatrzyma to automatyczne generowanie podczas tworzenia folderów, możesz włączyć je ponownie, jeśli chcesz.

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Następnie możesz użyć przykładu @Penang (powyżej), aby sprawdzić, czy pliki nie są już tworzone. Musiałem przesłać plik zip i każdy folder miał ten plik, a to mi pomogło.

Evan
źródło
0

Wyjaśnienie tego, czym są i jak je usunąć na stronie pomocy Adobe wszystkich miejsc.

Są to ukryty plik używany do przechowywania konfiguracji folderu (np. Pozycja ikony, kolor, tło folderu i pozycja przewijania. Niestety nie ma sposobu, aby zatrzymać ich tworzenie na stałe, chociaż Apple przyznaje, że mogą powodować problemy z niektórzy użytkownicy.

Trezoid
źródło