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.


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.

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