Получать уведомления, когда файл помещается в папку Mac OS X - PullRequest
1 голос
/ 28 августа 2010

Я хочу написать небольшой скрипт на моем Mac.Этот скрипт будет в основном искать новые файлы в определенной папке и перемещать их в другое место, когда они будут найдены.

Итак, я собирался написать что-то очень простое, с бесконечным циклом, и мне было интересно, существует ли что-то более приятное уже?Как слушатель или что-то, что я мог бы использовать?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 28 августа 2010

Вы хотите просмотреть действия с папками

http://www.simplehelp.net/2007/01/30/folder-actions-for-os-x-explained-with-real-world-examples/

4 голосов
/ 28 августа 2010

Альтернативный способ, немного более низкоуровневый, чем действия с папками, но я подозреваю, что более гибкий, - это использовать launchd для просмотра папки.

См. launchd.plist(5) или обзорную документацию для launchd (к сожалению, эта обзорная документация в основном касается демонов, но принцип тот же; ключ, который вас интересует, - WatchPaths поэтому поиск может найти что-то более похожее на учебник).

Если вы идете по этому пути, вам нужно создать .plist, как показано ниже, который запускает команду /path/to/virus/scanner.sh /Junk/Downloads всякий раз, когда каталог /Junk/Downloads изменяется.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>localhost.clamav.clamscan</string>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/virus/scanner.sh</string>
        <string>/Junk/Downloads</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Junk/Downloads</string>
    </array>
</dict>
</plist>

Поместите это в $HOME/Library/LaunchAgents/foo.plist, и команда launchctl load $HOME/Library/LaunchAgents/foo.plist начнет это.

1 голос
/ 29 августа 2010

Спасибо, Лу.

Я посмотрел вашу ссылку и выяснил, как создать свое собственное действие с папкой, выполняя то, что я хочу.

Просто поделитесь действием на тот случай, если кто-то захочет его использовать: MoveAction

Пока все отлично работает!

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