Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

Is there there a way to check a folder/file for changes (includes adding files, deleting files, changes in files,...). The 'Folder action' in Automator is only checking if any files are newly added.

share|improve this question
    
I don't think this is natively possible with Automator. You could probably do something with some scripting (and the scripting actions if you need it to work inside Automator), but you'd have to run the workflow to detect changes since the last run. –  jtjacques Jan 19 '11 at 21:10
3  
Did you look at launchd? cf stackoverflow.com/questions/1515730/… –  kraymer Jan 19 '11 at 21:25

4 Answers 4

You can add a "Run Shell Script" action with the command:

find <directory> -newermm <reference_file>

This will give you all files and directories inside <directory> that have changed since the last change of <reference_file>. Just make sure you modify the <reference_file> each time you run the Automator script.

Also give a look to the find manual page (enter man find in the terminal) for more options. Find is very powerful and further refining your search is usually a matter of a couple of additional options. E.g. to search only for directories modified after <reference_file>:

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

If the version that ships with OSX is not enough, you can also try the version that comes with findutils (brew, macports etc) which should have slightly more features.

share|improve this answer
    
I did not know that switch for find. +1 –  chiggsy Jul 8 '11 at 19:36

I don't know of a way to do this with Automator, but there is an app in the App Store called Folder Watch that may do what you're asking.

share|improve this answer

So last time I checked, Automater is using Applescript in the background to script your actions. Applescript does not have much depth to it. While it can get the list of files in a directory (and so therefore you could find out when something gets deleted), I don't believe it can calculate changes to a file.

What you really need to harness is file system notifications. And since that's a beast, I would take kraymer's advice and use launchd. It has hooks to execute anytime the contents of a folder is changed. Lingon (see also its outdated SourceForge page) is a great application for helping people jump into launchd. You can write your automator script/application to do whatever you were planning to do when your directory was modified and just have the launchd task call that.

share|improve this answer
    
+1 for lingon!! –  hobs Apr 28 '11 at 19:00

You can check at an earlier answer of mine, but it sounds like you want

fs_usage -f filesys  

Launchd is not the way to go for file changes, fs_usage uses the underlying machine that powers spotlight.

EDIT: I'm utterly wrong here. Launchd has exactly that functionality required, ie: do something on a file or directory change.

You make a .plist file.

Scream "XML SUX FOR CONF FILES!" ( It really does. )

and you'll want to use one or both of the keys below in your launchd job.

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.
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.