Поддержка действий папки Applescript для измененных / измененных / обновленных файлов? - PullRequest
3 голосов
/ 25 июня 2011

Не существует ли действие папки при изменении элемента папки? Я хочу, чтобы мой скрипт запускался, когда я обновляю файл. Я не вижу никаких ссылок на это в документации . Есть ли какая-то альтернатива, которую мне не хватает, потому что швы довольно сумасшедшие, чтобы не иметь.

on adding folder items to this_folder after receiving added_files
    do shell script "anything"
end adding folder items to

on removing folder items from this_folder after losing removed_files
    do shell script "anything"
end removing folder items from

-- does not exits?!?
on changing folder items in this_folder after updating changed_files
    do shell script "anything"
end changing folder items in

Ответы [ 4 ]

2 голосов
/ 25 июня 2011

Есть альтернатива действиям с папками. Вы используете launchd и настраиваете путь наблюдения. С помощью пути отслеживания, каждый раз, когда что-то меняется в папке, которую вы смотрите, ваш код запускается. Самое большое различие между действиями папки и действием launchd состоит в том, что с действием launchd вы не знаете, какие файлы изменились. Вы просто знаете, что-то изменилось. Таким образом, ваш код должен выяснить, что на самом деле было изменение, но это не должно быть слишком сложным в вашем случае, потому что если вы ищете обновленный файл, вы просто проверяете дату изменения файлов.

Если хотите попробовать, вы можете зайти в Google и посмотреть пути.

2 голосов
/ 25 июня 2011

Нет, не существует напрямую. Тем не менее, нечто подобное может быть достигнуто с помощью обработчика простоя, который просматривает файлы в папке, чтобы увидеть, изменилась ли их дата изменения, и выполнить действие с файлами, где это правда.

1 голос
/ 07 июля 2015

Я нашел хитрый способ сделать это с Automator легко и работает только в некоторых случаях, поэтому попробуйте и посмотрите, поможет ли это.Когда вы создаете / изменяете содержимое папок в OSX, в папку записывается скрытый файл ОС с именем .DS_Store, который становится бесполезным для пользователя, но может вызвать действие папки.С учетом сказанного я использую rsync в действии Run Shell Script в своем действии папки.Как только действие закончено, я удаляю файл .DS_Store.

Вот мой пример:

rsync -r /Users/path/to/source/* /Users/path/to/destination
rm -f /Users/path/to/source/.DS_Store

Затем, когда вы в следующий раз измените файлы / папки в этом каталоге, произойдет действие папки, и процесс повторится.

Надеюсь, это поможет ...

1 голос
/ 09 марта 2013

А как насчет rsync -va '/source/path/' '/destination/path/', используя Lingon, эту простую команду, установленную как пользовательский демон, можно запускать, скажем, каждые 10 секунд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...