フォルダー/ファイルの変更を確認する方法はありますか(ファイルの追加、ファイルの削除、ファイルの変更など)。Automatorの「フォルダアクション」は、ファイルが新しく追加されたかどうかを確認するだけです。
フォルダー/ファイルの変更を確認する方法はありますか(ファイルの追加、ファイルの削除、ファイルの変更など)。Automatorの「フォルダアクション」は、ファイルが新しく追加されたかどうかを確認するだけです。
回答:
次のコマンドを使用して、「シェルスクリプトの実行」アクションを追加できます。
find <directory> -newermm <reference_file>
これ<directory>
により、の最後の変更以降に変更されたすべてのファイルとディレクトリが表示され<reference_file>
ます。<reference_file>
Automatorスクリプトを実行するたびに変更するようにしてください。
man find
その他のオプションについては、findのマニュアルページ(ターミナルに入力)も参照してください。Findは非常に強力であり、検索をさらに絞り込むには通常、いくつかの追加オプションの問題です。たとえば、後に変更されたディレクトリのみを検索するには<reference_file>
:
find <directory> -type d -newermm <reference_file>
OSXに同梱されているバージョンでは不十分な場合は、付属のバージョンfindutils
(brew、macportsなど)を試してみてください。
前回チェックしたとき、AutomaterはバックグラウンドでApplescriptを使用してアクションをスクリプト化しています。Applescriptにはそれほど深みはありません。ディレクトリ内のファイルのリストを取得できます(したがって、何かが削除されたときにそれを見つけることができます)が、ファイルへの変更を計算できるとは思いません。
実際に利用する必要があるのは、ファイルシステム通知です。そして、それは獣なので、私はクレイマーのアドバイスを受けて、launchdを使用します。フォルダーの内容が変更されるたびに実行するフックがあります。Lingon(その古いSourceForgeページも参照)は、人々がlaunchdに飛び込むのを支援するための優れたアプリケーションです。ディレクトリが変更されたときに計画していたことをすべて実行するようにオートマトンスクリプト/アプリケーションを記述して、launchdタスクにそれを呼び出させるだけです。
あなたは私の以前の答えをチェックすることができますが、あなたが望むように聞こえます
fs_usage -f filesys
Launchdは、ファイルの変更を行う方法ではありません。fs_usageは、スポットライトを提供する基盤となるマシンを使用します。
編集:私はここで完全に間違っています。Launchdには、まさに必要な機能があります。つまり、ファイルまたはディレクトリの変更に対して何かを行います。
.plistファイルを作成します。
「XML SUX FOR CONF FILES!」(本当にそうです)
そして、あなたはあなたのlaunchdジョブで以下のキーの一方または両方を使いたいでしょう。
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.