Ich suche ein CLI-Tool, das ein Verzeichnis überwacht und die Namen von Dateien ausspuckt, die sich in Echtzeit ändern.
some_watch_command /path/to/some/folder | xargs some_callback
Ich bin mir bewusst inotify
( inotify-tools
?) Und es scheint das zu sein, was ich brauche, aber ich brauche etwas, das sowohl Linux (in meinem Fall Ubuntu) als auch OSX kompatibel ist.
Es muss nicht blitzschnell sein, aber es muss bei Änderungen ausgelöst werden (innerhalb einer Sekunde ist vernünftig). Außerdem brauche ich nicht unbedingt das oben erwähnte genaue CLI-Programm. Wenn eine zugrunde liegende Technologie vorhanden ist und auf beiden Plattformen leicht skriptfähig ist, wäre das auch großartig.
fswatch
für OS X , die ich auf eine Frage gefunden, die als Duplikat markiert wurde - superuser.com/questions/445907/...Antworten:
OS X verwendet normalerweise Ordneraktionen oder Launchd für diese Aufgabe.
Das einzige plattformübergreifende Tool, das ich kenne, ist die Watchdog-API für Python (daher für OS X und Linux verfügbar). Installieren Sie es durch
pip
(odereasy_install
)Es wird mit dem
watchmedo
Befehlszeilentool geliefert, mit dem Sie Shell-Befehle für Systemereignisse ausführen können. Überprüfen Sie die allgemeine Syntax mitwatchmedo --help
Hier ist ein kurzes Beispiel, in dem Sie den Befehl und den fett hervorgehobenen Pfad leicht ändern können:
Dies würde einfach die Pfade zu allen geänderten Dateien oder Ordnern ausspucken, sodass Sie die
watchmedo
Ausgabe an einen anderen Shell-Befehl weiterleiten können.quelle
watchmedo
funktionieren aber perfekt für mich. Vielen Dank!Ich habe einige Ruby-Skripte optimiert, um genau das zu tun, wonach Sie suchen. Hier ist der Ruby-Code:
Ich habe dieses Skript "OnSaveFolder.rb" genannt. Es werden zwei Parameter benötigt: der Ordner, den Sie auf Änderungen überwachen möchten, und der Bash-Code, den Sie ausführen möchten, wenn Änderungen vorgenommen wurden. Zum Beispiel,
Ich hoffe das hilft! Ich habe festgestellt, dass Ruby für diese Art von Dingen sehr gut funktioniert und standardmäßig unter OS X installiert ist.
quelle
Sie können
lsof
einenwatch
Befehl eingeben und alle<s>
Sekunden aktualisieren lassen :und starten Sie dies mit einem beliebigen Filter, z. B. pid1, pid2, pid3 beobachten und pid4 ignorieren
Wenn das nicht genug ist, können Sie jederzeit Ihre eigenen Filter mit grep schreiben.
Informationen zu OS X finden Sie in den Antworten dieser Frage .
quelle
Entr ist nett. Sie können genau die Dateien filtern, die Sie sehen möchten.
Wenn Sie möchten, dass nur bestimmte Dateien in einem Verzeichnis überwacht werden, können Sie Ihren
find
Befehl so gestalten, dass nur die Dateien zurückgegeben werden, die Sie anzeigen möchten.Ich finde es einfacher zu konfigurieren als
fswatch
.quelle