현재 디렉터리에서 .pdf 또는 .PDF 파일 생성을 모니터링하는 스크립트를 어떻게 작성할 수 있습니까?

현재 디렉터리에서 .pdf 또는 .PDF 파일 생성을 모니터링하는 스크립트를 어떻게 작성할 수 있습니까?

매분 생성된 새 파일만 표시하면 됩니다. watch 및 find 명령을 사용하여 newermt를 사용하여 새 파일을 찾거나 특정 확장자를 가진 파일을 찾을 수 있습니다. 하지만 두 가지를 동시에 수행하는 방법은 무엇입니까?

답변1

수행할 수 있는 작업을 간단히 살펴보면 bash다음과 같습니다.

 $ cat myscript.sh

 #!/usr/bin/bash
 while true; do
    timestamp=$(/usr/bin/date) # update of variable timestamp
    sleep 60  #  sleeps during 60s or 1min.
    find . -maxdepth 1 -type f \( -name "*.pdf" -o -name "*.PDF" \) -newermt "$timestamp"
 done

검색하려는 트리가 있는 디렉터리에서 스크립트를 실행합니다 myscript.sh( .chmod a+x myscript.sh

스크립트를 중지하고 전경에서 실행 중인 동안 중지하려면 Ctrl+C를 사용하여 스크립트를 수동으로 종료해야 합니다. 더 자세한 정보를 원하시면 언제든지 추가 질문을 하거나 인터넷을 검색하실 수 있습니다.

디렉토리 트리의 깊이에 따라 명령 find이 실제로 트리를 구문 분석하는 데 시간이 걸릴 수 있으므로 궁극적으로 이 간단한 솔루션을 사용하면 실제로 60초 이상마다 트리 파일을 구문 분석할 수 있습니다. "는 파일을 구문 분석/통계하는 데 걸리는 시간입니다. 이것이 당신에게 중요하다면, 이를 정정할 수 있는 여러 가지 방법이 있습니다.

답변2

주석에서 언급했듯이 inotifywait다음과 같이 특정 디렉터리를 모니터링하는 데 사용할 수 있습니다.

#!/usr/bin/env bash

while read -r path action file
  do 
    [[ $file == @(*.pdf|*.PDF) ]] && printf '%s %s\n' "File $file was ${action,,}d in $path"
  done < <(inotifywait -r -m testdir/ -e create,delete,moved_to)

결과는 다음과 같아야 합니다. 여기에 이미지 설명을 입력하세요.

관련 정보