当目录中的文件更改时执行命令

Mic*_*ale 5 macos

在 OS X 中,有没有办法(shell script-ish?)来监视目录中的文件模式,以及是否有任何文件更改来执行命令?

Lri*_*Lri 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>
Run Code Online (Sandbox Code Playgroud)

launchctl load ~/Library/LaunchAgents/watch.and.lol.plist 或重新登录以加载代理。

但是有一个启动问题«管理 OS X

事实证明,如果一个文件被列为 launchd 作业 WatchPath,则它必须始终存在,否则 launchd 会从其要监视的路径列表中删除该路径。所以你不能监视某个文件的创建;您只能监视对文件的更改。


tru*_*url 4

有一个应用程序可以做到这一点:

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

选择要监视的文件夹和要执行的脚本。您还可以编辑脚本。