Controllo per le modifiche della cartella / file usando Automator?
Domanda
C'è C'è un modo per controllare una cartella / file per le modifiche (include l'aggiunta di file, l'eliminazione di file, i cambiamenti nei file, ...). L' 'azione cartella' in Automator sta controllando solo se tutti i file sono di recente aggiunti.
Soluzione
È possibile aggiungere un'azione "Esegui script shell" con il comando:
find <directory> -newermm <reference_file>
Questo vi darà tutti i file e le directory all'interno <directory>
che sono stati modificati dopo l'ultimo cambio di <reference_file>
. Basta fare in modo di modificare il <reference_file>
ogni volta che si esegue lo script Automator.
Anche dare un'occhiata alla pagina di manuale di find (inserire man find
nel terminale) per ulteriori opzioni. Find è molto potente e ulteriormente raffinare la vostra ricerca è di solito una questione di un paio di opzioni aggiuntive. Per esempio. per la ricerca solo per le directory modificati dopo <reference_file>
:
find <directory> -type d -newermm <reference_file>
Se la versione fornita con OSX non è sufficiente, si può anche provare la versione che viene fornito con findutils
(birra, MacPorts ecc) che dovrebbe avere un po 'più funzioni.
Altri suggerimenti
Non so di un modo per farlo con Automator, ma c'è un app su App Store chiamato Folder Watch che possono fare quello che stai chiedendo.
Quindi, l'ultima volta che ho controllato, Automater sta usando AppleScript in background per lo script vostre azioni. Applescript non ha molta profondità ad esso. Mentre si può ottenere l'elenco dei file in una directory (e in modo quindi si può sapere quando qualcosa viene eliminato), non credo che possa calcolare le modifiche a un file.
Che cosa si ha realmente bisogno di imbracatura è notifiche del file system. E dato che è una bestia, vorrei prendere di kraymer consiglio e l'uso launchd. Ha ganci per eseguire in qualsiasi momento il contenuto di una cartella viene modificata. Lingon (vedi anche il suo obsoleto SourceForge pagina ) è una grande applicazione per aiutare le persone a saltare in launchd. È possibile scrivere lo script Automator / applicazione di fare quello che stavano progettando di fare quando la directory è stato modificato e solo la chiamata compito launchd che.
È possibile controllare in una precedente risposta dei miei , ma suona come si desidera
fs_usage -f filesys
launchd non è la strada da percorrere per le modifiche dei file, fs_usage utilizza la macchina sottostante che alimenta riflettori.
EDIT: Sono assolutamente sbagliato qui. Launchd ha esattamente tale funzionalità richiesto, vale a dire:. Fare qualcosa su una modifica di file o una directory
Si fa un file .plist.
urlo "XML SUX PER CONF FILE!" (Lo fa davvero.)
e si vorrà utilizzare uno o entrambi i tasti qui sotto nel vostro lavoro 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.