Альтернативный способ, немного более низкоуровневый, чем действия с папками, но я подозреваю, что более гибкий, - это использовать 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
начнет это.