다음과 같은 목표를 달성하려고 노력합니다.
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 명령이 수정될 때 동일한 이벤트를 트리거하는 것을 방지하기 위한 것입니다.