2010-08-28 2 views
1

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

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

Спасибо!

+0

Интересно, является ли это более сложным, чем вопрос StackOverflow - довольно полезный вопрос и ответ на любом сайте в любом случае - слишком много людей не знают о действиях с папками! – JulesLt

ответ

4

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

См launchd.plist(5) или overview documentation for 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

Thanks Lou.

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

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

Он отлично работает сейчас!

Смежные вопросы