Verifica delle modifiche alle cartelle / ai file usando Automator?


9

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.


Non penso che questo sia nativamente possibile con Automator. Probabilmente potresti fare qualcosa con alcuni script (e le azioni di scripting se ne hai bisogno per funzionare all'interno di Automator), ma dovresti eseguire il flusso di lavoro per rilevare le modifiche dall'ultima esecuzione.
jtjacques,

3

Risposte:


5

È 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 findnel 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à.


1

Non conosco un modo per farlo con Automator, ma c'è un'app nell'App Store chiamata Folder Watch che può fare quello che stai chiedendo.


1

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.


1

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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.