Automator kullanarak klasör / dosya değişikliklerini kontrol etmek istiyor musunuz?


9

Bir klasörü / dosyayı değişiklikler için kontrol etmenin bir yolu var mı (dosya ekleme, dosya silme, dosyadaki değişiklikler, ... dahil). Automator'daki 'Klasör eylemi' yalnızca yeni dosyaların eklenip eklenmediğini kontrol ediyor.


Automator ile bunun mümkün olduğunu düşünmüyorum. Muhtemelen bazı kodlamalarla (ve Automator'da çalışması için komut dosyası eylemleriyle) bir şeyler yapabilirsiniz, ancak son çalıştırmadan sonra değişiklikleri algılamak için iş akışını çalıştırmanız gerekir.
jtjacques

3
Launchd'a baktınız mı? cf stackoverflow.com/questions/1515730/…
kraymer

Yanıtlar:


5

Şu komutla bir "Kabuk Betiği Çalıştır" eylemi ekleyebilirsiniz:

find <directory> -newermm <reference_file>

Bu, içindeki <directory>son değişiklikten bu yana değişen tüm dosya ve dizinleri verecektir <reference_file>. <reference_file>Automator komut dosyasını her çalıştırdığınızda değişiklik yaptığınızdan emin olun .

Ayrıca man finddaha fazla seçenek için kılavuz bul sayfasına ( terminale girin ) bir göz atın . Bul çok güçlüdür ve aramanızı daha da hassaslaştırmak genellikle birkaç ek seçenekle ilgilidir. Örneğin, yalnızca şu tarihten sonra değiştirilen dizinleri aramak için <reference_file>:

find <directory> -type d -newermm <reference_file>

OSX ile gelen sürüm yeterli değilse, findutilsbiraz daha fazla özelliğe sahip olması gereken sürümü (demlemek, macports vb.) Da deneyebilirsiniz.


1

Automator ile bunu yapmanın bir yolunu bilmiyorum, ancak App Store'da Klasör İzleme adlı bir uygulama var.


1

Son kontrol ettiğimde, Automater eylemlerinizi kodlamak için arka planda Applescript kullanıyor. Applescript'in derinliği fazla değildir. Bir dizindeki dosyaların listesini alabilir (ve bu nedenle bir şey silindiğinde bulabilirsin), ancak bir dosyadaki değişiklikleri hesaplayabileceğine inanmıyorum.

Gerçekten kullanmanız gereken dosya sistemi bildirimleridir. Ve bu bir canavar olduğu için, kraymer'ın tavsiyesini alırdım ve fırlatma fırını kullanırım. Bir klasörün içeriği her değiştiğinde yürütülecek kancaları vardır. Lingon (ayrıca eski modası SourceForge sayfasına bakınız ), insanların fırlatmaya atlamasına yardımcı olmak için harika bir uygulamadır. Dizininiz değiştirilirken ne yapmak istediğinizi yapmak için automator betiğinizi / uygulamanızı yazabilir ve yalnızca launchd görevinin bunu çağırmasını sağlayabilirsiniz.


1

Daha önceki bir cevabımı kontrol edebilirsiniz , ancak istediğiniz gibi geliyor

fs_usage -f filesys  

Launchd, dosya değişiklikleri için gitmek için bir yol değildir, fs_usage spot ışığını destekleyen temel makineyi kullanır.

EDIT: Burada tamamen yanılıyorum. Launchd tam olarak gerekli işlevselliğe sahiptir, yani: bir dosya veya dizin değişikliğinde bir şeyler yapın.

Bir .plist dosyası oluşturursunuz.

"CONF DOSYALARI İÇİN XML SUX!" (Gerçekten öyle.)

ve fırlatma işinizde aşağıdaki anahtarlardan birini veya her ikisini de kullanmak istersiniz.

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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.