Есть ли способ проверить папку / файл на наличие изменений (включает добавление файлов, удаление файлов, изменения в файлах, ...). «Действие папки» в Automator проверяет только новые файлы.
Есть ли способ проверить папку / файл на наличие изменений (включает добавление файлов, удаление файлов, изменения в файлах, ...). «Действие папки» в Automator проверяет только новые файлы.
Ответы:
Вы можете добавить действие «Run Shell Script» с помощью команды:
find <directory> -newermm <reference_file>
Это даст вам все файлы и каталоги внутри, <directory>
которые были изменены с момента последнего изменения <reference_file>
. Просто убедитесь, что вы изменяете <reference_file>
каждый раз, когда запускаете скрипт Automator.
Также посмотрите страницу справки по поиску (введите man find
в терминале) для получения дополнительных опций. Поиск очень эффективен, и дальнейшее уточнение поиска обычно зависит от нескольких дополнительных опций. Например, искать только каталоги, измененные после <reference_file>
:
find <directory> -type d -newermm <reference_file>
Если версии, поставляемой с OSX, недостаточно, вы также можете попробовать версию, которая входит в findutils
комплект (brew, macports и т. Д.), Которая должна иметь немного больше функций.
Итак, в прошлый раз, когда я проверял, Automater использует Applescript в фоновом режиме для сценария ваших действий. У Applelescript нет большой глубины. Хотя он может получить список файлов в каталоге (и поэтому вы можете узнать, когда что-то удаляется), я не верю, что он может рассчитывать изменения в файле.
Что вам действительно нужно использовать, так это уведомления файловой системы. А так как это зверь, я бы взял совет Краймера и использовал launchd. Он имеет хуки для выполнения каждый раз, когда содержимое папки изменяется. Lingon (см. Также его устаревшую страницу SourceForge ) - отличное приложение, помогающее людям перейти к launchd. Вы можете написать свой скрипт / приложение automator, чтобы делать то, что вы планировали делать, когда ваш каталог был изменен, и просто вызвать задачу launchd.
Вы можете проверить мой более ранний ответ , но он звучит так, как вы хотите
fs_usage -f filesys
Launchd - это не способ изменения файла, fs_usage использует базовый компьютер, который обеспечивает освещение.
РЕДАКТИРОВАТЬ: Я совершенно не прав здесь. Launchd имеет именно ту функциональность, которая требуется, а именно: что-то сделать для изменения файла или каталога.
Вы делаете файл .plist.
Кричать "XML SUX для файлов CONF!" (Это действительно так.)
и вы захотите использовать один или оба из приведенных ниже ключей в вашем запущенном задании.
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.