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?

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.


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.


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źć.


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ąć.


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”.



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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.