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