Executa um comando quando os arquivos são alterados em um diretório

5

No OS X, existe uma maneira (shell script-ish?) de observar um diretório para um padrão de arquivo e se houver alguma alteração no arquivo para executar um comando?

    
por Michael Neale 08.07.2011 / 12:47

2 respostas

4

Há um aplicativo para isso:

/System/Library/CoreServices/Folder Actions Setup.app

Selecione uma pasta para assistir e um script para ser executado. Você também pode editar o script.

    
por 08.07.2011 / 12:53
5

~/Library/LaunchAgents/watch.and.lol.plist :

<?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>watch.and.lol</string>
    <key>ProgramArguments</key>
    <array>
        <string>say</string>
        <string>lol</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>~/Desktop</string>
    </array>
</dict>
</plist>

launchctl load ~/Library/LaunchAgents/watch.and.lol.plist ou relogar para carregar o agente.

Há um launchd gotcha «Gerenciando o OS X :

It turns out that if a file is listed as a launchd job WatchPath, it must exist at all times, or launchd removes the path from its list of paths to watch. So you can't watch for the creation of a certain file; you can only watch for changes to the file.

    
por 08.07.2011 / 13:09

Tags