次の目標を達成しようとします。
1) ファイル名は同じですが、新しい内容で新しいファイルがアップロードされます。
2)ファイル内の特定の文字列を確認して置き換えるイベントトリガ
3)ファイルを所定の位置に保存(ループ可能)または変更してファイルの新しいコピーを作成できます。
dieventとincronを使用したいイベントをキャプチャする場合は、両方ともイベントをキャプチャできますが、ファイル内の文字列を見つけて置き換えるコマンドを実行するのに問題があります。
検索と置換機能を使用するには、sedとPerlを試してください。
SED+INCRON:/path to file folder/ IN_MODIFY /bin/sed -i 's+/pub/+/+g' filename.xml
ドライバ+PERL:
direvent.conf content
watcher {
path /path to file/;
event write;
command "/usr/bin/perl script.pl";
}
script.pl content
#!/usr/bin/perl
use strict;
use warnings;
perl -pe 's/old_string/new_string' filename.xml
誰かがアイデアを提案できますか?
答え1
あなたの質問をよく理解していませんが、あなたが望むものは次のとおりです。
perl -i -pe 's/oldstring/newstring/g' /some/file
oldstring
シェル(またはシェルスクリプト)でこのコマンドを実行すると、次のように置き換えられます。newstring
/some/file
答え2
コードで「フォルダパス」を検索し、sed / perlコマンドでそのパスを忘れました(この場合、相対パスはわかりませんが、テストではデフォルト値に設定されています/
)。
ファイル自体を見て使用するためにincronを使用するのはどうですか?
/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@
注:IN_NO_LOOP
これは、sedコマンドが変更されたときに同じイベントをトリガーするのを防ぐためです。