Controllare la modifica di cartelle / file usando Automator?

8

C'è un modo per controllare una cartella / file per le modifiche (include l'aggiunta di file, l'eliminazione di file, la modifica di file, ...). L'azione "Cartella" in Automator sta controllando solo se vengono aggiunti nuovi file.

    
posta Saneef 19.01.2011 - 16:19
fonte

4 risposte

4

È possibile aggiungere un'azione "Esegui script shell" con il comando:

find <directory> -newermm <reference_file>

Questo ti darà tutti i file e le directory in <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 (inserisci man find nel terminale) per ulteriori opzioni. Trovare è molto potente e perfezionare ulteriormente la ricerca è di solito un paio di opzioni aggiuntive. Per 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 con findutils (brew, macports ecc.) che dovrebbe avere un po 'più di funzioni.

    
risposta data 29.03.2011 - 16:49
fonte
1

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

    
risposta data 15.02.2011 - 04:18
fonte
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 puoi scoprire quando qualcosa viene eliminato), non credo che possa calcolare le modifiche a un file.

Quello di cui hai veramente bisogno è sfruttare le notifiche del file system. E dato che è una bestia, vorrei prendere il consiglio di kraymer e usare launchd. Ha degli hook da eseguire ogni volta che viene modificato il contenuto di una cartella. Lingon (vedi anche il suo obsoleto La pagina SourceForge ) è una grande applicazione per aiutare le persone a lanciarsi in launchd. Puoi scrivere il tuo script / applicazione per l'automazione per fare tutto ciò che avevi intenzione di fare quando la tua directory è stata modificata e solo avere la chiamata task di launchd quella.

    
risposta data 16.02.2011 - 06:50
fonte
1

Puoi controllare a una mia risposta precedente , ma sembra che tu voglia

fs_usage -f filesys  

Launchd non è la soluzione giusta per le modifiche ai file, fs_usage utilizza la macchina sottostante che alimenta il riflettore.

EDIT: Sono completamente sbagliato qui. Launchd ha esattamente quella funzionalità richiesta, cioè: fare qualcosa su un file o sulla directory.

Crea un file .plist.

Scream "XML SUX PER FILE DI CONF!" (Lo fa davvero.)

e ti consigliamo di utilizzare uno o entrambi i tasti sottostanti nel tuo lavoro 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.
    
risposta data 18.02.2011 - 22:46
fonte

Leggi altre domande sui tag