Automatorを使用してフォルダ/ファイルの変更を確認していますか?


9

フォルダー/ファイルの変更を確認する方法はありますか(ファイルの追加、ファイルの削除、ファイルの変更など)。Automatorの「フォルダアクション」は、ファイルが新しく追加されたかどうかを確認するだけです。


これはAutomatorでネイティブに可能であるとは思いません。おそらくいくつかのスクリプト(およびAutomator内で作業する必要がある場合はスクリプトアクション)で何かを行うことができますが、最後の実行以降の変更を検出するにはワークフローを実行する必要があります。
jtjacques

3
あなたはlaunchdを見ましたか?CF stackoverflow.com/questions/1515730/...
kraymer

回答:


5

次のコマンドを使用して、「シェルスクリプトの実行」アクションを追加できます。

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など)を試してみてください。


1

Automatorでこれを行う方法はわかりませんが、App StoreにはFolder Watchと呼ばれるアプリがあります。


1

前回チェックしたとき、AutomaterはバックグラウンドでApplescriptを使用してアクションをスクリプト化しています。Applescriptにはそれほど深みはありません。ディレクトリ内のファイルのリストを取得できます(したがって、何かが削除されたときにそれを見つけることができます)が、ファイルへの変更を計算できるとは思いません。

実際に利用する必要があるのは、ファイルシステム通知です。そして、それは獣なので、私はクレイマーのアドバイスを受けて、launchdを使用します。フォルダーの内容が変更されるたびに実行するフックがあります。Lingon(その古いSourceForgeページ参照)は、人々がlaunchdに飛び込むのを支援するための優れたアプリケーションです。ディレクトリが変更されたときに計画していたことをすべて実行するようにオートマトンスクリプト/アプリケーションを記述して、launchdタスクにそれを呼び出させるだけです。


1

あなたは私の以前の答えをチェックすることができますが、あなたが望むように聞こえます

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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.