วิธีการเรียกใช้งานการกระทำโฟลเดอร์หรือสคริปต์อัตโนมัติอื่นเมื่อฉันทำการเปลี่ยนแปลงโฟลเดอร์? และโดยการเปลี่ยนแปลงฉันหมายถึงไม่เพียง แต่ลบหรือแทรกไฟล์ใหม่สิ่งที่สำคัญที่สุดสำหรับฉันคือเมื่อเนื้อหาของไฟล์เปลี่ยนไป
วิธีการเรียกใช้งานการกระทำโฟลเดอร์หรือสคริปต์อัตโนมัติอื่นเมื่อฉันทำการเปลี่ยนแปลงโฟลเดอร์? และโดยการเปลี่ยนแปลงฉันหมายถึงไม่เพียง แต่ลบหรือแทรกไฟล์ใหม่สิ่งที่สำคัญที่สุดสำหรับฉันคือเมื่อเนื้อหาของไฟล์เปลี่ยนไป
คำตอบ:
การใช้ launchd คุณสามารถบันทึกรายการคุณสมบัติเช่นนี้ใน ~ / Library / LaunchAgents / และโหลดด้วยสิ่งที่ชอบ launchctl load ~/Library/LaunchAgents/automator_test.plist
หรือโดยออกจากระบบและกลับเข้ามาใหม่
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>automator_test</string>
<key>ProgramArguments</key>
<array>
<string>automator</string>
<string>/Users/username/Desktop/Test.workflow</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/username/Desktop/</string>
</array>
<key>StartInterval</key>
<integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>
Launchd จะตรวจจับการเปลี่ยนแปลงไฟล์เมื่อถูกบันทึกแบบอะตอมเท่านั้น (หรือถูกลบและสร้างใหม่ทุกครั้งที่มีการบันทึก) แอป OS X ส่วนใหญ่ทำการบันทึกแบบปรมาณู แต่ตัวอย่างเช่น TextMate และ vim ไม่ได้
username
? คุณต้อง launchctl unload $path && launchctl load $path
เพื่อใช้การเปลี่ยนแปลง
ความต้องการประเภทนี้มีความซับซ้อนมากกว่า fsevents
hooks แสดงเป็น Actions ของโฟลเดอร์ ฉันแนะนำให้ใช้ของ Paul Kim สีน้ำตาลแดง ซึ่งจะช่วยให้คุณสร้างกฎ“ ดูและตอบสนอง” ที่มีความละเอียดและความซับซ้อนไม่ จำกัด