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.

È stato utile?

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a apple.stackexchange
scroll top