Esiste un modo per verificare la presenza di modifiche in una cartella / file (include l'aggiunta di file, l'eliminazione di file, le modifiche ai file, ...). L '"Azione cartella" in Automator controlla solo se sono stati aggiunti nuovi file.
Esiste un modo per verificare la presenza di modifiche in una cartella / file (include l'aggiunta di file, l'eliminazione di file, le modifiche ai file, ...). L '"Azione cartella" in Automator controlla solo se sono stati aggiunti nuovi file.
Risposte:
È possibile aggiungere un'azione "Esegui script shell" con il comando:
find <directory> -newermm <reference_file>
Questo ti darà tutti i file e le directory all'interno <directory>
che sono stati modificati dall'ultima modifica di <reference_file>
. Assicurati di modificare <reference_file>
ogni volta che esegui lo script di Automator.
Dai anche un'occhiata alla pagina del manuale di ricerca (entra man find
nel terminale) per ulteriori opzioni. Trovare è molto potente e perfezionare ulteriormente la tua ricerca di solito è una questione di un paio di opzioni aggiuntive. Ad esempio per cercare solo le directory modificate dopo <reference_file>
:
find <directory> -type d -newermm <reference_file>
Se la versione fornita con OSX non è sufficiente, puoi anche provare la versione fornita findutils
(brew, macports ecc.) Che dovrebbe avere leggermente più funzionalità.
Quindi l'ultima volta che ho controllato, Automater sta usando Applescript in background per scrivere le tue azioni. Applescript non ha molta profondità. Mentre può ottenere l'elenco dei file in una directory (e quindi potresti scoprire quando qualcosa viene eliminato), non credo che possa calcolare le modifiche a un file.
Ciò di cui hai veramente bisogno per sfruttare le notifiche del file system. E dato che è una bestia, seguirei il consiglio di Kraymer e userei launchd. Ha hook da eseguire ogni volta che il contenuto di una cartella viene modificato. Lingon (vedi anche la sua pagina SourceForge obsoleta ) è un'ottima applicazione per aiutare le persone a lanciarsi in launchd. Puoi scrivere il tuo script / applicazione automator per fare tutto ciò che stavi pianificando di fare quando la directory è stata modificata e basta che l'attività launchd lo chiami.
Puoi controllare una mia precedente risposta , ma sembra che tu voglia
fs_usage -f filesys
Launchd non è la strada da percorrere per le modifiche ai file, fs_usage utilizza la macchina sottostante che alimenta i riflettori.
EDIT: ho completamente sbagliato qui. Launchd ha esattamente quella funzionalità richiesta, ovvero: fare qualcosa su un file o cambiare directory.
Si crea un file .plist.
Urla "XML SUX PER FILE CONF!" (Lo fa davvero.)
e ti consigliamo di utilizzare una o entrambe le chiavi di seguito nel tuo processo di avvio.
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.