Memeriksa perubahan folder / file menggunakan Automator?

9

Apakah ada cara untuk memeriksa folder / file untuk perubahan (termasuk menambahkan file, menghapus file, perubahan file, ...). 'Tindakan folder' di Automator hanya memeriksa apakah ada file yang baru ditambahkan.

Saneef
sumber
Saya tidak berpikir ini mungkin dengan Automator. Anda mungkin dapat melakukan sesuatu dengan beberapa skrip (dan tindakan skrip jika Anda membutuhkannya untuk bekerja di dalam Automator), tetapi Anda harus menjalankan alur kerja untuk mendeteksi perubahan sejak jalankan terakhir.
jtjacques
3
Apakah Anda melihat launchd? cf stackoverflow.com/questions/1515730/…
kraymer

Jawaban:

5

Anda dapat menambahkan tindakan "Jalankan Shell Script" dengan perintah:

find <directory> -newermm <reference_file>

Ini akan memberi Anda semua file dan direktori di dalam <directory>yang telah berubah sejak perubahan terakhir <reference_file>. Pastikan Anda memodifikasi <reference_file>setiap kali Anda menjalankan skrip Automator.

Lihat juga halaman manual find (masukkan man finddi terminal) untuk opsi lainnya. Temukan sangat kuat dan semakin menyempurnakan pencarian Anda biasanya adalah masalah beberapa opsi tambahan. Misalnya untuk mencari hanya direktori yang diubah setelah <reference_file>:

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

Jika versi yang dikirimkan dengan OSX tidak cukup, Anda juga dapat mencoba versi yang menyertai findutils(minuman, macports dll) yang seharusnya memiliki fitur sedikit lebih banyak.

m000
sumber
1

Saya tidak tahu cara untuk melakukan ini dengan Automator, tetapi ada aplikasi di App Store bernama Folder Watch yang dapat melakukan apa yang Anda minta.

Keris
sumber
1

Jadi terakhir kali saya memeriksa, Automater menggunakan Applescript di latar belakang untuk skrip tindakan Anda. Applescript tidak memiliki kedalaman untuk itu. Meskipun bisa mendapatkan daftar file dalam direktori (dan karena itu Anda bisa mengetahui kapan sesuatu terhapus), saya tidak percaya itu bisa menghitung perubahan pada file.

Yang benar-benar Anda butuhkan untuk memanfaatkannya adalah pemberitahuan sistem file. Dan karena itu binatang buas, saya akan mengambil saran kraymer dan menggunakan launchd. Ini memiliki kait untuk mengeksekusi kapan saja isi folder diubah. Lingon (lihat juga halaman SourceForge yang sudah usang ) adalah aplikasi yang bagus untuk membantu orang-orang terjun ke launchd. Anda dapat menulis skrip / aplikasi automator Anda untuk melakukan apa pun yang Anda rencanakan untuk dilakukan ketika direktori Anda telah dimodifikasi dan hanya perlu memanggil task launchd itu.

Staros
sumber
1

Anda dapat memeriksa jawaban saya sebelumnya , tetapi sepertinya Anda inginkan

fs_usage -f filesys  

Launchd bukan cara untuk mencari perubahan file, fs_usage menggunakan mesin yang mendasari yang menjadi sorotan.

EDIT: Saya benar-benar salah di sini. Launchd memiliki fungsionalitas yang diperlukan, yaitu: melakukan sesuatu pada perubahan file atau direktori.

Anda membuat file .plist.

Scream "XML SUX UNTUK CONF FILES!" (Memang benar.)

dan Anda ingin menggunakan salah satu atau kedua tombol di bawah ini dalam pekerjaan launchd Anda.

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.
chiggs
sumber