Я ищу инструмент CLI, который будет смотреть каталог и выкладывать имена файлов, которые изменяются в режиме реального времени.
some_watch_command /path/to/some/folder | xargs some_callback
Я знаю inotify
( inotify-tools
?), И, похоже, это то, что мне нужно, но мне нужно что-то совместимое с Linux (в моем случае Ubuntu) и OSX.
Он не должен быть молниеносным, но должен вызывать изменения (в течение секунды это разумно). Кроме того, мне не обязательно нужна точная программа CLI, упомянутая выше. Если какая-то базовая технология существует и ее можно легко создавать на обеих платформах, это тоже было бы здорово.
fswatch
OS X, который я нашел по вопросу, который был помечен как дубликат - superuser.com/questions/445907/…Ответы:
OS X обычно использует действия с папками или Launchd для этой задачи.
Единственный известный мне кроссплатформенный инструмент - это сторожевой API для Python (таким образом, доступный для OS X и Linux). Установите его через
pip
(илиeasy_install
)Он поставляется с
watchmedo
инструментом командной строки, который позволяет запускать команды оболочки для системных событий. Проверьте его общий синтаксис сwatchmedo --help
Вот краткий пример, где вы можете легко изменить команду и путь, выделенный жирным шрифтом:
Это просто высветит пути ко всем измененным файлам или папкам, что позволит вам направить
watchmedo
вывод в другую команду оболочки.источник
watchmedo
отлично работают для меня. Благодарность!Я настроил некоторые скрипты на Ruby, с которыми я столкнулся, чтобы сделать именно то, что вы ищете. Вот код Ruby:
Я назвал этот скрипт "OnSaveFolder.rb". Он принимает два параметра: папку, за которой вы хотите следить за изменениями, и код bash, который вы хотите запустить, когда произошли изменения. Например,
Надеюсь, это поможет! Я обнаружил, что ruby очень хорошо работает для такого типа вещей, и он установлен по умолчанию в OS X.
источник
Вы можете поместить
lsof
вwatch
команду и это обновление каждые<s>
секунд:и запустить его с любым фильтром, таким как просмотр pid1, pid2, pid3 и игнорирование pid4
Если этого недостаточно, вы всегда можете написать свои собственные фильтры с помощью grep.
Для OS X посмотрите ответы на этот вопрос .
источник
Entr это хорошо. Вы можете отфильтровать файлы, которые хотите посмотреть, вот так.
Если вы хотите, чтобы он отслеживал только определенные файлы в каталоге, вы можете создать свою
find
команду так, чтобы она возвращала только те файлы, которые вы хотите просмотреть.Мне проще настроить, чем
fswatch
.источник