Automatizace se hodí nejenom u přeplněné složky Downloads. Ušetří práci i tam, kde macOS sám selhává, třeba u screenshotů na síťovém disku. Ukážu placenou Hazel, bezplatnou alternativu Forel, CLI nástroj organize, cestu zdarma přes Automator a nakonec i vlastní shell skript pro ty, kterým nevyhovuje žádná z aplikací.
Rychlá odpověď
Na Macu existuje pro automatizaci práce se soubory víc cest. Nejznámější a nejsilnější je placená Hazel za 42 USD. Bezplatnou open source alternativou podobného střihu je Forel. Kdo umí trochu s příkazovou řádkou, má k dispozici i open source CLI nástroj organize, zdarma a multiplatformní. Bez instalace čehokoliv navíc jde využít vestavěný Automator s Folder Action, případně od macOS Tahoe i nativní automatizace ve Zkratkách. A pro opravdu specifické případy (třeba kontrolu, jestli je síťový disk připojený) se vyplatí vlastní shell skript spouštěný přes launchd nebo cron.
Kromě téhle pětice existuje i pár menších, mladších appek (Floxtop, Neatify, File Arbor), rozebírám je níž v samostatné sekci.
Do toho se počítá i Syncthing, ale ten dělá něco úplně jiného, viz níže.
Starší tip Jak mohu nějak automaticky třídit, přesouvat a zpracovávat soubory? se věnuje hlavně Windows nástrojům, tady je řeč čistě o Macu.
Hazel: nejznámější, ale placené řešení
Hazel od Noodlesoftu je na Macu synonymem pro automatizaci práce se soubory. Sledujete jí zvolené složky a pro ně vytváříte pravidla, co se má stát: přesunout, přejmenovat, oštítkovat, otevřít, archivovat, nahrát jinam.
Jednorázová licence stojí 42 USD, rodinný balíček pro 5 Maců 65 USD. Aktuální verze je Hazel 6. Zkušební 14denní verze je zdarma, takže si dřív než za placení vyzkoušíte, jestli vám to sedí.
Pro naše účely je důležitá jedna funkce navíc: Run Rules Now, tedy ruční spuštění pravidel pro danou složku, aniž byste čekali na automatickou reakci na změnu. K tomu se ještě dostanu.
Forel: bezplatná alternativa
Forel je open source (GPLv3) aplikace, která dělá podobnou věc jako Hazel a je zadarmo. Sleduje složky a podle pravidel soubory přesouvá, kopíruje, přejmenovává, taguje nebo maže, žije v menu baru a běží na pozadí.
Zásadní háček: podle oficiálních stránek vyžaduje Forel macOS 14 (Sonoma) nebo novější. Pokud máte starší Mac nebo starší systém, Forel nenainstalujete a zbývá vám buď Hazel (má širší podporu verzí), nebo Automator či shell skript popsané dál.
Forel v menu baru umožňuje jednotlivá pravidla zapínat a vypínat bez otevírání hlavního okna. Jestli má i přesně stejné tlačítko na okamžité ruční spuštění jako Hazelovo „Run Rules Now“, se mi nepodařilo v dokumentaci ověřit – vyzkoušejte si to přímo v aplikaci.
Kterou variantu zvolit
| Kritérium | Hazel | Forel | Automator (Folder Action) | organize (CLI) | Shell skript + launchd/cron |
| Cena | 42 USD (jednorázově) | zdarma | zdarma, součást macOS | zdarma, open source | zdarma, součást macOS |
| Reakce na změnu | okamžitě | okamžitě | okamžitě | podle spuštění (ručně, nebo přes launchd/cron) | okamžitě (launchd) nebo podle intervalu (cron) |
| Minimální macOS | širší podpora verzí | macOS 14+ | součást systému | vyžaduje Python 3.9+ | součást systému |
| Nastavování | grafické rozhraní, bez psaní kódu | grafické rozhraní, bez psaní kódu | skládání akcí myší | psaní pravidel do YAML souboru | vyžaduje napsat/upravit skript |
| Vhodné pro | složitější pravidla, kombinace podmínek | totéž co Hazel, bez placení | jednoduché, jednorázově sestavené úkony | uživatele, kteří chtějí verzovatelnou konfiguraci a nevadí jim terminál | situace, kdy potřebujete vlastní logiku (třeba kontrolu připojení disku) |
organize: CLI nástroj pro příkazovou řádku
Kdo pracuje běžně s terminálem, nemusí sahat po žádné appce s oknem. organize (balíček organize-tool) je open source (MIT licence) nástroj v Pythonu, aktivně vyvíjený od roku 2019, který dokumentace přímo popisuje jako open source alternativu k Hazelu a File Jugglerovi. Běží na Macu, Windows i Linuxu.
Instalace:
pip install organize-tool --break-system-packages
Pravidla se píšou do YAML konfigurace, například:
rules:
- name: "Screenshoty na síťový disk"
locations: ~/Desktop
filters:
- filename:
startswith: "Screenshot"
actions:
- move: "/Volumes/NAS/Screenshots/"
Konfiguraci otevřete příkazem organize edit, vyzkoušíte nanečisto (bez skutečného přesunu souborů) příkazem organize sim a spustíte doopravdy přes organize run. Sám o sobě nic nehlídá na pozadí, ke sledování složky v reálném čase ho musíte spustit přes launchd (viz dál) nebo naplánovat přes cron.
Výhoda oproti Hazelu nebo Forelu je, že pravidla jsou obyčejný textový soubor, který jde verzovat v gitu a přenášet mezi počítači. Nevýhoda je nutnost umět aspoň trochu YAML a terminál.
Menší a novější alternativy
Kromě výše uvedených existuje pár menších appek, které se v seznamech „Hazel alternatives“ objevují, ale stojí za upřesnění, protože leckterá z nich na Macu vůbec neběží:
- Floxtop – 20 USD jednorázově (nebo omezená bezplatná verze), třídí soubory podle obsahu (ne jen podle jména/typu) a umí navrhovat chytřejší názvy souborů. Běží celé lokálně, bez připojení k internetu.
- Neatify – jednorázově 31 USD, na Mac App Store. Je to malá appka od jednoho vývojáře, zjednodušená oproti Hazelu (žádný regex, jen jednoduché „typ souboru → cílová složka“), bez podpory pro složitější podmínky.
- File Arbor – freemium, funguje na Macu i Windows, pravidly připomíná Hazel.
Všechny tři jsou mladší a míň prověřené než Hazel nebo Forel, s výrazně menší uživatelskou základnou a málo recenzemi. Nebral bych je jako první volbu, spíš jako věc k vyzkoušení, pokud vám nevyhovuje žádná z hlavních možností výše.
Naopak Mouzi a DropIt, které se v žebříčcích alternativ k Hazelu objevují na předních místech, jsou jenom pro Windows a Linux, na Macu se nespustí.
Kdo chce automatizaci obecněji, ne jen pro soubory (spouštění aplikací, práce s oknem, klávesové zkratky), může sáhnout po Keyboard Maestro (36 USD, jednorázově). Má vlastní Folder trigger, který spustí makro při přidání nebo odebrání souboru ve sledované složce, jen si v něm logiku skládáte z obecnějších stavebních bloků, ne z hotových pravidel jako v Hazelu.
Syncthing dělá něco jiného
Do stejné kategorie se občas řadí i Syncthing, ale nepatří tam úplně přesně. Je to nástroj na synchronizaci souborů mezi zařízeními, ne na jejich zpracování. Syncthing soubor nepřesune do jiné složky, nepřejmenuje ho ani neoštítkuje, jenom zajistí, že stejný obsah bude na všech propojených zařízeních. Pokud chcete soubory logicky třídit nebo s nimi něco dělat, potřebujete Hazel, Forel, Automator nebo vlastní skript, ne synchronizační nástroj.
Kdy se to hodí: příklad se screenshoty
Typický případ, kdy se automatizace vyplatí, jsou screenshoty ukládané na externí nebo síťový disk. macOS má letitou a stále živou chybu, kdy pořízení screenshotu do takové složky náhodně selže s hláškou, že soubor nejde uložit na zvolené místo, a o pár sekund později to bez jakékoliv změny projde. Diskuze na Apple Support Community potvrzuje, že se s tím uživatelé potýkají dodnes, včetně aktuální Sequoie.
Praktické řešení je ukládat screenshoty klasicky do lokální složky, která nikdy neselže, a nechat Hazel nebo Forel přesouvat obsah na správné místo v pravidelných intervalech. Sami tak obejdete chybu, kterou Apple zjevně dlouhodobě neřeší.
Automator a Folder Action zdarma
Bez instalace čehokoliv navíc jde podobnou věc udělat i vestavěným Automatorem. Postup:
- Spustíte Automator a zvolíte nový dokument typu Folder Action.
- Vyberete složku, kterou má sledovat (pole „Folder Action receives files and folders added to“).
- Přidáte akci Move Finder Items a nastavíte cílovou složku v poli „To“.
- Workflow uložíte, čímž se zároveň zaregistruje jako aktivní Folder Action.
Podrobný popis i s obrázky má macosxautomation.com, včetně upozornění, že od macOS Mojave je potřeba workflow poprvé bezpečnostně schválit.
Oproti Hazelu nebo Forelu je to řešení zadarmo, ale s omezenější logikou (těžko v něm postavíte složitější podmínky) a bez centrálního přehledu, co se kdy spustilo.
Od macOS Tahoe (26) navíc appka Zkratky umí totéž nativně, bez staré oklikou přes AppleScript. V sekci Automatizace (Automation) jde vytvořit osobní automatizaci s triggerem přímo na „přidání souboru do složky“ nebo „úprava souboru“, stejně jako triggery na připojení externího disku nebo změnu Wi-Fi sítě. Pokud jste na Tahoe nebo novějším, je tohle dnes o něco modernější bezplatná volba než starý Automator Folder Action.
Háček: nedostupný cíl
Ať zvolíte Hazel, Forel, nebo Automator, přesun do externí nebo síťové složky selže úplně stejně, pokud cílový disk zrovna není připojený. To se stane, když je vypnutý, odpojený, nebo je síť dočasně nedostupná.
U Hazelu i Forelu si po opětovném zpřístupnění disku pomůžete ručním spuštěním pravidel (u Hazelu konkrétně tlačítkem Run Rules Now). U Automatorove Folder Action nic takového vestavěné není, takže tam prakticky musíte soubor znovu „spustit“ jeho přidáním do sledované složky nebo mít druhotnou lokální mezisložku, na kterou navazuje druhý krok.
S podobnou nedostupností síťových složek na Macu souvisí i jiný problém, který jsem tu řešil dřív: Co se síťovými složkami u kterých na Mac OS nejde nic kopírovat, mazat ani měnit? Jde o jiný mechanismus (zamčené složky), ale stejně nepříjemný zádrhel u síťových disků na Macu.
Shell skript pro pokročilé: launchd, nebo cron
Pokud chcete mít nad chováním úplnou kontrolu, včetně kontroly dostupnosti síťového disku, dá se to vyřešit jednoduchým shell skriptem:
#!/bin/bash
SOURCE="$HOME/Pictures/Screenshots-tmp"
TARGET="/Volumes/NAS/Screenshots"
# pokud cílová složka (na síťovém disku) není vidět, zkusit disk připojit
if [ ! -d "$TARGET" ]; then
open "smb://server.local/NAS"
sleep 5
fi
# pokud je teď cíl dostupný, přesunout obsah zdrojové složky
if [ -d "$TARGET" ]; then
find "$SOURCE" -type f -exec mv {} "$TARGET" \;
fi
Pozor, mv bez dalších podmínek přepíše v cíli soubor se stejným jménem beze ptaní. U screenshotů, které mají v názvu čas, to obvykle není problém, u jinak pojmenovaných souborů si to pohlídejte.
Skript pak potřebuje něco, co ho bude spouštět. Na Macu jsou dvě cesty:
launchd je nativní a Applem doporučovaný způsob, jak spustit skript okamžitě při změně ve sledované složce, ne až podle intervalu. Vytvoříte soubor ~/Library/LaunchAgents/cz.365tipu.presun-screenshotu.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>cz.365tipu.presun-screenshotu</string>
<key>ProgramArguments</key>
<array>
<string>/Users/vase-jmeno/Scripts/presun-screenshotu.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/vase-jmeno/Pictures/Screenshots-tmp</string>
</array>
<key>ThrottleInterval</key>
<integer>10</integer>
</dict>
</plist>
WatchPaths říká launchd, kterou složku má hlídat, ThrottleInterval zabrání tomu, aby se skript spouštěl víckrát za sekundu při hromadné změně. Po uložení se agent zaregistruje příkazem:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/cz.365tipu.presun-screenshotu.plist
cron je jednodušší na zápis, ale kontroluje složku jen v pravidelném intervalu, ne okamžitě při změně. Skript stačí přidat přes crontab -e, například každých 10 minut:
*/10 * * * * /Users/vase-jmeno/Scripts/presun-screenshotu.sh
Cron na macOS pořád funguje, ale od Catalina dál potřebuje pro přístup k datům mimo systémové složky výslovně přiznaný Full Disk Access, jinak skript sice poběží, ale bude tiše selhávat na „Operation not permitted“. Návod, jak to nastavit, popisuje OSXDaily: v Nastavení systému jde o Ochranu osobních údajů a zabezpečení → Úplný přístup k disku, kam kromě cron přidejte i Terminal, přes který crontab upravujete. launchd tenhle konkrétní problém nemívá tak často, ale plist soubor se píše hůř než jeden řádek v crontabu.
Co doporučit
Pokud vám nevadí platit a chcete jedno robustní řešení s grafickým rozhraním, které zvládne i složitější kombinace pravidel, sáhněte po Hazelu. Pro stejnou věc zadarmo, s tím, že potřebujete macOS 14 nebo novější, je Forel rozumná volba. Kdo je zvyklý na terminál a chce mít pravidla jako textový soubor, který jde verzovat, sáhne po organize. Pro jednorázový, jednoduchý úkon (třeba přesun jednoho typu souboru z jedné složky do druhé) stačí Automator nebo na Tahoe rovnou Zkratky, a nemusíte nic instalovat. Vlastní shell skript přes launchd se vyplatí, jen když potřebujete logiku, kterou žádná z aplikací nenabízí, typicky ošetření nedostupného síťového disku, a chcete reakci v reálném čase, ne jednou za pár minut jako u cronu.
Další testování Claude Skill
Tady už to Claude dostala v podobě titulku a čtyč nejpodstatnější odstavců (Hazel, Forel, Synthing a Automator a onen praktický příklad). Skill se už mezití dostal vylepšené verze, takže tentokrát rešeržovala, kontrolovala odkazy, přidala další články z 365tipů a byl to i MD výsledek ke stáhnutí. Dala dokonce dohromady přehlednou tabulku s cenami a dalšími věcmi, přidala i shell skript a cron pro obnovu mizejících síťových disků.
Co ale neudělala? Nenašla další alternativy, to dělala až v poté, co jsem se na to zeptal. Takže pak přišla s Keyboard Maestro a také to, že pro toto jde použít u Shortcuts. Jenže stejně nanašla VaultSort, FloxTop, Mounzi, Dropit a další (přitom jsou v Hazel Alternatives, byť některé jsou pro Windows). Stejně jako nepadlo ani slovo o tom, že by tohle přece mělo jít i přes nějaké CLI nástroje. Takže jako vždy pár koleček zpětné vazby.
Měli byste vědět i to, že tak zhruba čtyři tipy tohoto rozsahu spotřebují klasický limit co se obnovuje každých pár hodin (v Claude Pro). Na psaní velkého množství věcí to tak jako tak není. A stejně tak to není “zadám to a ono to napíše”. Těch zpětných vazeb, kontrol a dalších verzí je běžně tak tři a více.
