inotify와 tail 명령을 결합하여 수정된 각 파일의 마지막 줄을 인쇄하는 방법

inotify와 tail 명령을 결합하여 수정된 각 파일의 마지막 줄을 인쇄하는 방법

특정 디렉터리(특정 경로 제외)의 파일이 수정된 시기를 표시하는 다음 명령이 있습니다.

inotifywait -m -q -r --format '%T % e %w%f' --excludei '/trash/' --timefmt '%d/%m/%Y-%H:%M:%S%z' /my/monitored/folder

tail수정된 각 파일의 마지막 줄을 검색할 수 있도록 이(또는 유사한) 명령을 결합하는 방법이 있습니까 ? 중요한 것은 이것이 출력 파일의 경로와 추가된 마지막 줄을 결합한다는 것입니다.

답변1

귀하의 질문에서 파일이 삭제되었는지 검사하고 싶다고 말씀하셨습니다.수정됨이지만 명령에 이벤트가 지정되지 않았습니다.

그래서 내 대답은 해당 이벤트를 사용합니다 modify.

inotifywait -m -q -r \
  --format '%T % e %w%f' \
  --excludei '/trash/' \
  --timefmt '%d/%m/%Y-%H:%M:%S%z' /my/monitored/folder | \
   while IFS=' ' read -r time event file; do
    echo "file: $file"
    echo "modified: $time"
    last_line=$(tail -1 "$file")
    echo "last line: $last_line"
    echo
  done

다음과 같이 출력됩니다.

file: /path/file.txt
modified: 17/02/2021-09:17:02-0300
last line: foo

관련 정보