Szukam narzędzia CLI, które obejrzy katalog i wypluje nazwy plików, które zmieniają się w czasie rzeczywistym.
some_watch_command /path/to/some/folder | xargs some_callback
Jestem świadomy inotify
( inotify-tools
?) I wydaje się, że jest to, czego potrzebuję, ale potrzebuję czegoś, co jest zarówno Linux (w moim przypadku Ubuntu), jak i OSX.
Nie musi być błyskawiczny, ale musi się uruchamiać po zmianach (w ciągu sekundy jest to rozsądne). Ponadto niekoniecznie potrzebuję dokładnie wspomnianego powyżej programu CLI. Jeśli istnieje jakaś podstawowa technologia i jest łatwa do skryptowania na obu platformach, to też byłoby świetnie.
fswatch
OS X, który znalazłem w pytaniu oznaczonym jako duplikat - superuser.com/questions/445907/…Odpowiedzi:
OS X zwykle używa do tego zadania akcji folderów lub uruchomionych .
Jedynym znanym mi narzędziem międzyplatformowym jest API watchdog dla Pythona (dostępne dla systemów OS X i Linux). Zainstaluj przez
pip
(lubeasy_install
)Jest wyposażony w
watchmedo
narzędzie wiersza poleceń, które umożliwia uruchamianie poleceń powłoki w przypadku zdarzeń systemowych. Sprawdź ogólną składnię za pomocąwatchmedo --help
Oto krótki przykład, w którym można łatwo zmodyfikować polecenie i ścieżkę wyróżnioną pogrubioną czcionką:
Spowodowałoby to po prostu wyrzucenie ścieżek do wszystkich zmienionych plików lub folderów, umożliwiając
watchmedo
przesyłanie danych wyjściowych potoku do innego polecenia powłoki.źródło
watchmedo
dla mnie działa idealnie. Dzięki!Poprawiłem kilka skryptów Ruby, z którymi się spotkałem, aby robić dokładnie to, czego szukasz. Oto kod Ruby:
Nazwałem ten skrypt „OnSaveFolder.rb”. Wymaga dwóch parametrów: folderu, w którym chcesz obserwować zmiany, oraz kodu bash, który chcesz uruchomić, gdy nastąpiła zmiana. Na przykład,
Mam nadzieję, że to pomoże! Przekonałem się, że Ruby działa bardzo dobrze w tego typu rzeczach i jest domyślnie zainstalowany w systemie OS X.
źródło
Można umieścić
lsof
wwatch
poleceniu i go aktualizować co<s>
sekund:i uruchom to z dowolnym filtrem, takim jak oglądanie pid1, pid2, pid3 i ignorowanie pid4
Jeśli to nie wystarczy, zawsze możesz napisać własne filtry za pomocą grep.
W przypadku systemu OS X zobacz odpowiedzi na to pytanie .
źródło
entr jest miły. Możesz filtrować dokładnie takie pliki, które chcesz oglądać, w ten sposób.
Jeśli chcesz, aby monitorował tylko niektóre pliki w katalogu, możesz spreparować swoje
find
polecenie, aby zwracało tylko pliki, które chcesz obejrzeć.Łatwiej jest go skonfigurować niż
fswatch
.źródło