는 inotifywait -e CREATE
에서 텍스트 출력은 watched_filename
이 /home/inventory/initcsv
및 event_filename
을 나타냅니다
watched_filename CREATE event_filename
새 파일의 이름을 나타내는 형태입니다.
DIR=/home/inventory/initcsv
while RES=$(inotifywait -e create $DIR); do
F=${RES#?*CREATE }
을하고 Filein
이름으로 당신의 sed
라인 사용 $F
에서 :
그래서, 당신의 while inotifywait -e ...
라인 대신에 넣어. $(...)
구조는 posix 호환 형식의 프로세스 대체 형식 (종종 역 따옴표를 사용하여 완료)이며 결과는 가장 짧은 패턴 일치 접두사가 제거 된 $RES
과 같습니다. 패턴의 마지막 문자는 공백입니다.
업데이트 1 sed의 라인을 사용하는 대신 $F
의 "$F"
에 공백을 포함 할 수 있습니다 파일 이름을 처리하기 위해 [2 업데이트보기]. 즉, F
값에 대한 참조를 큰 따옴표로 묶으십시오.
RES=...
및 F=...
정의에는 큰 따옴표를 사용할 필요가 없지만 원하는 경우 사용할 수 있습니다. 예 : F=${RES#?*CREATE }
및 F="${RES#?*CREATE }"
둘 다 공백이 포함 된 파일 이름을 처리 할 때 정상적으로 작동합니다.
업데이트 2 Daan의 설명에서 언급했듯이 inotifywait
에는 출력 형식을 제어하는 --format
매개 변수가 있습니다.
Setting up watches.
Watches established.
RES is a at Tue Dec 31 11:37:20 MST 2013
Setting up watches.
Watches established.
RES is aaa at Tue Dec 31 11:37:21 MST 2013
Setting up watches.
Watches established.
RES is aaaa at Tue Dec 31 11:37:22 MST 2013
Setting up watches.
Watches established.
'--format % w' 옵션을 사용하여 출력하지 않으면 파일 이름 만 사용할 수 있습니다. – Daan
@ Daan, 맞습니다. (% f, % w 제외). 업데이트 2를 참조하십시오 –
'inotifywait -e delete_self aSymlinkFilename' 심볼릭 링크가 삭제 된 경우에만 실제 파일이 삭제 될 때 작동하지 않습니다. (깨진 심볼릭 링크에서는 작동하지 않습니다 : ( –