Чи є спосіб перевірити папку / файл на наявність змін (включає додавання файлів, видалення файлів, зміни у файлах, ...). "Дія папок" в Автоматизаторі перевіряє, чи не додані файли.
Чи є спосіб перевірити папку / файл на наявність змін (включає додавання файлів, видалення файлів, зміни у файлах, ...). "Дія папок" в Автоматизаторі перевіряє, чи не додані файли.
Відповіді:
Ви можете додати дію "Запустити скрипт оболонки" за допомогою команди:
find <directory> -newermm <reference_file>
Це дасть вам усі файли та каталоги всередині <directory>
, які змінилися з моменту останньої зміни <reference_file>
. Просто переконайтеся, що ви змінюєте <reference_file>
кожен раз, коли ви запускаєте скрипт Automator.
Також перегляньте сторінку пошуку з посібником пошуку (введіть man find
в терміналі) для отримання додаткових опцій. Пошук є дуже потужним, і подальше вдосконалення пошуку зазвичай є справою пари додаткових варіантів. Наприклад, шукати лише каталоги, змінені після <reference_file>
:
find <directory> -type d -newermm <reference_file>
Якщо версії, що постачається з OSX, недостатньо, ви також можете спробувати версію, яка постачається разом findutils
(варити, макпорти тощо), яка повинна мати трохи більше функцій.
Тож останній раз, коли я перевірив, Automater використовує Applescript у фоновому режимі для сценарію своїх дій. Яблукопис не має до нього великої глибини. Хоча він може отримати список файлів у каталозі (і тому ви можете дізнатися, коли щось видаляється), я не вірю, що він може обчислити зміни у файлі.
Те, що вам потрібно використовувати, - це сповіщення файлової системи. А оскільки це звір, я б скористався порадою Краймера і скористався запуском. Він має гачки для виконання будь-якого разу, коли вміст папки змінюється. Lingon (див. Також застарілу сторінку SourceForge ) - це чудовий додаток, який допомагає людям стрибати у старт. Ви можете написати свій сценарій / додаток автоматизатора, щоб робити все, що ви планували робити, коли ваш каталог був змінений, і просто виклик цього завдання.
Ви можете перевірити попередню мою відповідь , але це звучить так, як ви хочете
fs_usage -f filesys
Launchd - це не спосіб змінити файли, fs_usage використовує основну машину, яка працює над прожектором.
EDIT: Я тут абсолютно не так. 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.