Sprawdzasz zmiany folderów / plików za pomocą Automatora?

9

Czy istnieje sposób sprawdzenia folderu / pliku pod kątem zmian (obejmuje dodawanie plików, usuwanie plików, zmiany w plikach, ...). „Akcja folderów” w Automatorze sprawdza tylko, czy jakieś pliki są nowo dodane.

Saneef
źródło
Nie sądzę, aby było to możliwe w Automatorze. Prawdopodobnie możesz coś zrobić za pomocą skryptów (i akcji skryptowych, jeśli potrzebujesz, aby działał w Automatorze), ale musisz uruchomić przepływ pracy, aby wykryć zmiany od ostatniego uruchomienia.
jtjacques,
3
Czy patrzyłeś na uruchomioną? cf stackoverflow.com/questions/1515730/…
kraymer

Odpowiedzi:

5

Możesz dodać akcję „Uruchom skrypt powłoki” za pomocą polecenia:

find <directory> -newermm <reference_file>

To da ci wszystkie pliki i katalogi <directory>, które zmieniły się od ostatniej zmiany <reference_file>. Upewnij się tylko, że modyfikujesz za <reference_file>każdym razem, gdy uruchamiasz skrypt Automatora.

Zobacz także stronę podręcznika wyszukiwania (wprowadź man findw terminalu), aby uzyskać więcej opcji. Znajdź jest bardzo wydajne, a dalsze udoskonalenie wyszukiwania jest zwykle kwestią kilku dodatkowych opcji. Np. Aby wyszukać tylko katalogi zmodyfikowane po <reference_file>:

find <directory> -type d -newermm <reference_file>

Jeśli wersja dostarczana z OSX jest niewystarczająca, możesz również wypróbować wersję dostarczoną z findutils(brew, macports itp.), Która powinna mieć nieco więcej funkcji.

m000
źródło
1

Nie wiem, jak to zrobić za pomocą Automatora, ale w App Store jest aplikacja o nazwie Folder Watch, która może robić to, o co prosisz.

Kris
źródło
1

Więc kiedy ostatnio sprawdzałem, Automater używa Applescript w tle do pisania skryptów twoich działań. Applescript nie ma w tym wiele głębi. Chociaż może uzyskać listę plików w katalogu (i dlatego możesz dowiedzieć się, kiedy coś zostanie usunięte), nie sądzę, aby mógł obliczyć zmiany w pliku.

To, czego naprawdę potrzebujesz, to powiadomienia systemu plików. A ponieważ jest to bestia, skorzystam z porady Kraymera i skorzystam z wodowania. Ma zaczepy do wykonania przy każdej zmianie zawartości folderu. Lingon (patrz także jego nieaktualna strona SourceForge ) to świetna aplikacja do pomocy ludziom w uruchomieniu. Możesz napisać skrypt / aplikację automatyzującą, aby zrobić wszystko, co planowałeś zrobić, kiedy katalog został zmodyfikowany i po prostu wywołać wywołane zadanie.

Staros
źródło
1

Możesz sprawdzić wcześniejszą odpowiedź , ale brzmi to tak, jak chcesz

fs_usage -f filesys  

Uruchomienie nie jest sposobem na zmiany plików, fs_usage używa bazowej maszyny, która napędza światło reflektorów.

EDYCJA: Jestem całkowicie w błędzie. Launchd ma dokładnie taką wymaganą funkcjonalność, tj .: zrób coś na zmianie pliku lub katalogu.

Tworzysz plik .plist.

Krzycz „XML SUX DLA PLIKÓW KONF!” (Naprawdę.)

i będziesz chciał użyć jednego lub obu poniższych kluczy w uruchomionej pracy.

WatchPaths <array of strings>
 This optional key causes the job to be started if any one of the listed
 paths are modified.

 QueueDirectories <array of strings>
 Much like the WatchPaths option, this key will watch the paths for modi-
 fications. The difference being that the job will only be started if the
 path is a directory and the directory is not empty.
chiggsy
źródło