Проверять изменения папок / файлов с помощью Automator?

9

Есть ли способ проверить папку / файл на наличие изменений (включает добавление файлов, удаление файлов, изменения в файлах, ...). «Действие папки» в Automator проверяет только новые файлы.

Saneef
источник
Я не думаю, что это изначально возможно с Automator. Вероятно, вы могли бы что-то сделать с некоторыми сценариями (и действиями сценариев, если вам это нужно для работы внутри Automator), но вам придется запустить рабочий процесс, чтобы обнаружить изменения с момента последнего запуска.
Jtjacques
3
Вы смотрели на launchd? cf stackoverflow.com/questions/1515730/…
kraymer

Ответы:

5

Вы можете добавить действие «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 и т. Д.), Которая должна иметь немного больше функций.

M000
источник
1

Я не знаю, как это сделать с помощью Automator, но в App Store есть приложение под названием Folder Watch, которое может делать то, что вы просите.

Kris
источник
1

Итак, в прошлый раз, когда я проверял, Automater использует Applescript в фоновом режиме для сценария ваших действий. У Applelescript нет большой глубины. Хотя он может получить список файлов в каталоге (и поэтому вы можете узнать, когда что-то удаляется), я не верю, что он может рассчитывать изменения в файле.

Что вам действительно нужно использовать, так это уведомления файловой системы. А так как это зверь, я бы взял совет Краймера и использовал launchd. Он имеет хуки для выполнения каждый раз, когда содержимое папки изменяется. Lingon (см. Также его устаревшую страницу SourceForge ) - отличное приложение, помогающее людям перейти к launchd. Вы можете написать свой скрипт / приложение automator, чтобы делать то, что вы планировали делать, когда ваш каталог был изменен, и просто вызвать задачу launchd.

Старос
источник
1

Вы можете проверить мой более ранний ответ , но он звучит так, как вы хотите

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.
chiggsy
источник