Jak mogę wsadowo skompresować wiele folderów bez plików _macosx?

2

Chcę spakować wiele folderów jednocześnie, gdzie każdy folder jest własnym plikiem zip. Chciałbym utworzyć zip bez _macosx lub innych ukrytych plików, a jeśli to możliwe, należy zmienić rozszerzenie pliku zip na .cbz w tym samym czasie. W ten sposób mogę po prostu uruchomić jeden proces na jednym folderze i szybko je wszystkie.

Używam Ubooquity do hostowania moich komiksów i traktuje je jako uszkodzone, jeśli plik _macosx lub jakiekolwiek inne ukryte pliki znajdują się w pliku zip.

Ryan Boles
źródło
Czy docelowe poszczególne foldery, które chcesz (grupowo) skompresować indywidualnie, zawierają również podfoldery, czy tylko pliki w każdym docelowym indywidualnym folderze do skompresowania?
user3439894
Brak podfolderów. Mam jeden duży folder (na przykład Spider-Man). Następnie w tym folderze znajdują się foldery dla każdego wydania. (Spider-Man 001, Spider-Man 002 itp.) W tych folderach znajdują się obrazy jpg. 001.jpg, 002.jpg itp.
Ryan Boles
Jeśli więc w Finderze przejdziesz do folderu Spider-Man i wybierzesz Spider-Man 001, Spider-Man 002 itp., Kliknij prawym przyciskiem myszy i wybierz Utwórz archiwum Zip CBZ, a następnie utworzysz Spider-Man 001.cbz, Spider -Man 002.cbz itp. W folderze Spider-Man, byłbyś z tego zadowolony? Oczywiście do każdego archiwum zip nie będzie dodawany folder __MACOSX ani ukryte pliki, takie jak .DS_Store, .localized lub inne wyjątki dodane w razie potrzeby.
user3439894,
Tak, byłbym szczęśliwy, gdybym mógł je spakować, klikając prawym przyciskiem myszy i wybierając Utwórz CBZ, jeśli nie zawierał plików _macosx i .ds_store. Kiedy po prostu użyję domyślnej opcji kompresji, będzie ona zawierać te.
Ryan Boles

Odpowiedzi:

1

Oto usługa Automatora, która używa pojedynczej akcji Uruchom skrypt powłoki do obsługi tego procesu.

  • W Automatorze wybierz: Plik > Nowy > Usługa

  • Ustaw: Usługa odbiera wybrane foldery w Finderze

  • Dodaj Run Shell Script Akcja

    • Ustawienia: Shell: / bin / bash i Pass input: jako argumenty
    • Wymień wszystkie standardowy kod z kodem pokazać poniżej.
  • Zapisz usługę Automator, nadając jej odpowiednią nazwę, np .: Utwórz archiwum Zip CBZ

Teraz w Finderze wybierz foldery docelowe, dla których chcesz osobne archiwum zip, z rozszerzeniem .cbz dla każdego wybranego folderu, a następnie kliknij prawym przyciskiem myszy i wybierz Utwórz archiwum zip CBZ , z sekcji usług menu kontekstowego .

Kod dla akcji Skrypt powłoki powłoki :

for d in "$@"; do
    if ! cd "$(dirname "$d")"; then exit; fi
    if ! d="$(basename "$d")"; then exit; fi
    if [[ ! -e "${d}.cbz" ]]; then
        if ! zip -r "${d}.cbz" "$d" -x \*.DS_Store \*.localized; then exit; fi
    fi
done

Uwagi:

  • Po zakodowaniu tworzy plik archiwum zip nazwa pliku.cbz tylko wtedy, gdy plik jeszcze nie istnieje.
  • Tworzy plik zip archiwum filename.cbz w tym samym folderze, który zawiera wybrane foldery.
  • Jest napisany w taki sposób, że jeśli wystąpi błąd przy którymkolwiek z podjętych kroków, wychodzi ze skryptu bez powiadomienia. Obsługa błędów może być modyfikowana według potrzeb / potrzeb.
  • Domyślnie folder zipnie będzie zawierał, __MACOSXa jeśli okaże się, że istnieją inne ukryte pliki poza tym, .DS_Storei .localizedchociaż nie powinieneś uruchamiać tego drugiego w tym przypadku użycia, możesz dodać dodatkowe wykluczenia do zip polecenia .
  • W tej chwili jedynym wskazaniem do zakończenia skryptu jest zniknięcie ikony narzędzi serwisowych Automatora na pasku menu. Niektóre inne formy powiadomienia o ukończeniu można dodać do skryptu i / lub rozszerzyć obieg pracy usługi Automator o dodatkowe działania w razie potrzeby, potrzebne / pożądane.
  • Jak na razie nie ma żadnych zbędnych dodatków, ale robi to, co zaprogramowano.
użytkownik3439894
źródło
Działa to idealnie dla moich potrzeb. Dziękuję bardzo!
Ryan Boles,
Czy istnieje sposób, aby dodać usługę, aby wyświetlała się po kliknięciu prawym przyciskiem myszy w menu domyślnym, czy też zawsze muszę najeżdżać na kartę usług?
Ryan Boles,
@Ryan Bolesm Ile usług masz w menu kontekstowym Usługi w Finderze? Możesz także przypisać do niego skrót, np .: ⇧⌘B
użytkownik3439894
Mam 1. Ustawienia akcji folderów ... 2. Omnifocus 2 3. Dodaj do listy Wunderlist 4. Zmień nazwę 5. CBZ Zip 6. Ujawnij w wyszukiwarce. Jak dodać go jako skrót?
Ryan Boles,
@ Ryan Boles, IIRC Gdy masz więcej niż 4 usługi, tworzy Usługi jako podmenu w menu kontekstowym. Jeśli uruchomisz następujące polecenie w terminalu, powinno ono pokazać wszystko bezpośrednio w menu kontekstowym: defaults write -g NSServicesMinimumItemCountForContextSubmenu -int 100001Następnie, killall Finderaby zmiana zaczęła obowiązywać. Aby dodać skrót klawiaturowy: Preferencje systemowe> Klawiatura> Skróty> Usługi
użytkownik3439894