ตรวจสอบการเปลี่ยนแปลงโฟลเดอร์ / ไฟล์โดยใช้ Automator หรือไม่


9

มีวิธีการตรวจสอบการเปลี่ยนแปลงโฟลเดอร์ / ไฟล์ (รวมถึงการเพิ่มไฟล์, การลบไฟล์, การเปลี่ยนแปลงในไฟล์, ... ) 'การกระทำของโฟลเดอร์' ใน Automator ตรวจสอบเฉพาะว่ามีการเพิ่มไฟล์ใด ๆ


ฉันไม่คิดว่านี่เป็นไปได้โดยอัตโนมัติกับ Automator คุณอาจจะทำบางสิ่งบางอย่างกับการเขียนสคริปต์ (และการกระทำการเขียนสคริปต์หากคุณต้องการให้ทำงานภายใน Automator) แต่คุณต้องใช้เวิร์กโฟลว์เพื่อตรวจจับการเปลี่ยนแปลงนับตั้งแต่การทำงานครั้งสุดท้าย
jtjacques

3
คุณดูที่ launchd หรือไม่? cf stackoverflow.com/questions/1515730/…
kraymer

คำตอบ:


5

คุณสามารถเพิ่มแอ็คชัน "Run Shell Script" ด้วยคำสั่ง:

find <directory> -newermm <reference_file>

ซึ่งจะทำให้คุณไฟล์และไดเรกทอรีทั้งหมดภายในที่มีการเปลี่ยนแปลงตั้งแต่การเปลี่ยนแปลงล่าสุดของ<directory> <reference_file>เพียงให้แน่ใจว่าคุณแก้ไข<reference_file>ทุกครั้งที่คุณเรียกใช้สคริปต์ Automator

ดูที่หน้าการค้นหาด้วยตนเอง (ป้อนman findในเทอร์มินัล) เพื่อดูตัวเลือกเพิ่มเติม การค้นหานั้นมีประสิทธิภาพมากและการปรับการค้นหาของคุณต่อไปนั้นเป็นเรื่องของตัวเลือกเพิ่มเติมสองสามตัว เช่นเพื่อค้นหาเฉพาะไดเรกทอรีที่แก้ไขหลังจาก<reference_file>:

find <directory> -type d -newermm <reference_file>

หากรุ่นที่มาพร้อมกับ OSX ไม่เพียงพอคุณสามารถลองรุ่นที่มาพร้อมกับfindutils(ชง macports ฯลฯ ) ซึ่งควรมีคุณสมบัติเพิ่มเติมเล็กน้อย


1

ฉันไม่รู้วิธีการทำสิ่งนี้กับ Automator แต่มีแอพใน App Store ชื่อ Folder Watch ที่อาจทำสิ่งที่คุณขอ


1

ดังนั้นครั้งสุดท้ายที่ฉันตรวจสอบ Automater ใช้ Applescript ในพื้นหลังเพื่อเขียนสคริปต์การกระทำของคุณ Applescript มีความลึกไม่มากนัก ในขณะที่สามารถรับรายการไฟล์ในไดเรกทอรี (และดังนั้นคุณสามารถค้นหาเมื่อบางสิ่งถูกลบ) แต่ฉันไม่เชื่อว่ามันสามารถคำนวณการเปลี่ยนแปลงของไฟล์ได้

สิ่งที่คุณต้องใช้ในการควบคุมคือการแจ้งเตือนระบบไฟล์ และเนื่องจากเป็นสัตว์ร้ายฉันจะรับคำแนะนำของ kraymer และใช้ launchd มันมี hooks ที่จะดำเนินการเมื่อใดก็ตามที่เนื้อหาของโฟลเดอร์ถูกเปลี่ยน Lingon (ดูที่หน้า SourceForge ที่ล้าสมัย) เป็นแอปพลิเคชั่นที่ยอดเยี่ยมสำหรับการช่วยเหลือผู้คนในการเข้าสู่ launchd คุณสามารถเขียนสคริปต์ / แอปพลิเคชัน automator ของคุณเพื่อทำสิ่งที่คุณวางแผนที่จะทำเมื่อไดเรกทอรีของคุณได้รับการแก้ไขและเพียงแค่มีการเรียกงาน taskd ที่


1

คุณสามารถตรวจสอบคำตอบของฉันก่อนหน้านี้แต่ดูเหมือนว่าคุณต้องการ

fs_usage -f filesys  

Launchd ไม่ใช่วิธีการเปลี่ยนแปลงไฟล์ แต่อย่างใด fs_usage ใช้เครื่องจักรพื้นฐานที่ให้ความสำคัญกับสปอตไลท์

แก้ไข: ฉันผิดอย่างเต็มที่ที่นี่ Launchd มีฟังก์ชั่นที่ต้องการเช่น: ทำบางสิ่งบางอย่างในไฟล์หรือเปลี่ยนไดเรกทอรี

คุณสร้างไฟล์. plist

กรีดร้อง "XML SUX สำหรับไฟล์ CONF!" (มันทำจริงๆ)

และคุณต้องการใช้หนึ่งหรือทั้งสองปุ่มด้านล่างในงาน launchd ของคุณ

WatchPaths <array of strings>
 This optional key causes the job to be started if any one of the listed
 paths are modified.

 QueueDirectories <array of strings>
 Much like the WatchPaths option, this key will watch the paths for modi-
 fications. The difference being that the job will only be started if the
 path is a directory and the directory is not empty.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.