Automatorを使用してフォルダー/ファイルの変更を確認しますか?
質問
フォルダー/ファイルの変更を確認する方法はありますか(ファイルの追加、ファイルの削除、ファイルの変更など)。 Automatorの「フォルダーアクション」は、ファイルが新しく追加されているかどうかを確認しています。
解決
コマンドに「ランシェルスクリプト」アクションを追加できます。
find <directory> -newermm <reference_file>
これにより、内部のすべてのファイルとディレクトリが得られます <directory>
それは最後の変更以来変化しています <reference_file>
. 。確認してください <reference_file>
自動車スクリプトを実行するたびに。
また、検索マニュアルページをご覧ください(入力してください man find
その他のオプションについては、端末)。 Findは非常に強力であり、検索をさらに改善することは通常、いくつかの追加オプションの問題です。たとえば、後に変更されたディレクトリのみを検索します <reference_file>
:
find <directory> -type d -newermm <reference_file>
OSXに出荷するバージョンでは不十分な場合は、付属のバージョンを試すこともできます findutils
(Brew、MacPortsなど)は、少し多くの機能を備えている必要があります。
他のヒント
Automatorでこれを行う方法はわかりませんが、フォルダーウォッチと呼ばれるアプリには、あなたが求めていることをするかもしれないアプリがあります。
そのため、前回確認したとき、AutomaterはバックグラウンドでApplescriptを使用してアクションをスクリプト化しています。 Applescriptにはあまり深みがありません。ディレクトリ内のファイルのリストを取得できますが(したがって、何かが削除されたときに確認できます)、ファイルの変更を計算できるとは思いません。
本当に活用する必要があるのは、ファイルシステム通知です。そして、それは獣であるので、私はKraymerのアドバイスを受け取り、Launchdを使用します。フォルダーの内容が変更されると、いつでも実行するフックがあります。 リンゴン (その時代遅れも参照してください SourceForgeページ)人々が発売に飛び込むのを支援するための素晴らしいアプリケーションです。自動車スクリプト/アプリケーションを記述して、ディレクトリが変更されたときに計画していることは何でも実行し、それを発売するタスクを呼び出すだけです。
確認してもいい 私の以前の答えで, 、しかし、それはあなたが望んでいるように聞こえます
fs_usage -f filesys
LaunchDはファイルの変更に進む方法ではありません。FS_USAGEは、スポットライトを与える基礎となるマシンを使用します。
編集:ここでは全く間違っています。 LaunchDには、まさにその機能が必要です。つまり、ファイルまたはディレクトリの変更で何かを実行します。
.plistファイルを作成します。
「confファイルのためのxml sux!」 (本当にそうです。)
また、LaunchDジョブで以下のキーの1つまたは両方を使用することをお勧めします。
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.