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.
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.
Yanıtlar:
Ş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 find
daha 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, findutils
biraz daha fazla özelliğe sahip olması gereken sürümü (demlemek, macports vb.) Da deneyebilirsiniz.
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.
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.