Je cherche un outil CLI qui surveillera un répertoire et crachera les noms des fichiers qui changent en temps réel.
some_watch_command /path/to/some/folder | xargs some_callback
Je connais inotify
( inotify-tools
?) Et cela semble être ce dont j'ai besoin, mais j'ai besoin de quelque chose qui soit à la fois compatible avec Linux (dans mon cas Ubuntu) et OSX.
Il n'a pas besoin d'être rapide comme l'éclair, mais il doit se déclencher lors des changements (dans une seconde, c'est raisonnable). De plus, je n'ai pas nécessairement besoin du programme CLI exact mentionné ci-dessus. Si une technologie sous-jacente existe et est facilement scriptable sur les deux plates-formes, ce serait génial aussi.
fswatch
pour OS X que j'ai trouvé sur une question étiquetée comme doublon - superuser.com/questions/445907/…Réponses:
OS X utilise généralement les actions de dossier ou Launchd pour cette tâche.
Le seul outil multiplateforme que je connaisse est l' API de surveillance pour Python (donc disponible pour OS X et Linux). Installez-le via
pip
(oueasy_install
)Il est livré avec l'
watchmedo
outil de ligne de commande, qui vous permet d'exécuter des commandes shell sur les événements système. Vérifiez sa syntaxe générale avecwatchmedo --help
Voici un court exemple, où vous pouvez facilement modifier la commande et le chemin mis en évidence en gras:
Cela cracherait simplement les chemins vers tous les fichiers ou dossiers modifiés, vous permettant de diriger
watchmedo
la sortie de vers une autre commande shell.la source
watchmedo
fonctionne parfaitement pour moi. Merci!J'ai modifié quelques scripts Ruby que j'ai rencontrés pour faire exactement ce que vous cherchez. Voici le code Ruby:
J'ai nommé ce script "OnSaveFolder.rb". Il prend deux paramètres: le dossier que vous souhaitez surveiller pour les modifications et le code bash que vous souhaitez exécuter en cas de modification. Par exemple,
J'espère que ça aide! J'ai trouvé que ruby fonctionne très bien pour ce type de chose, et il est installé sur OS X par défaut.
la source
Vous pouvez mettre
lsof
unewatch
commande et la mettre à jour toutes les<s>
secondes:et lancez-le avec n'importe quel filtre, comme regarder pid1, pid2, pid3 et ignorer pid4
Si cela ne suffit pas, vous pouvez toujours écrire vos propres filtres avec grep.
Pour OS X, voir les réponses à cette question .
la source
entr est sympa. Vous pouvez filtrer les fichiers exacts que vous souhaitez qu'il regarde, comme ceci.
Si vous souhaitez qu'il ne surveille que certains fichiers dans un répertoire, vous pouvez créer votre
find
commande afin qu'elle ne renvoie que les fichiers que vous souhaitez regarder.Je trouve cela plus facile à configurer que
fswatch
.la source