Linux에서 최근 수정되었거나 새로 생성된 파일 나열

Linux에서 최근 수정되었거나 새로 생성된 파일 나열

Linux에서 수정되거나 새로 생성된 파일이나 디렉터리를 나열하는 방법. 이렇게 하면 다른 명령이나 셸 스크립트를 실행하여 다른 작업을 수행할 수 있습니다. 예를 들어. a.txt 및 test.txt 파일이 수정되었으며 Linux cmd를 사용하여 마지막으로 변경된 파일을 찾은 다음 restart.sh 스크립트를 트리거하여 변경 사항을 가져오고 싶습니다.

답변1

이를 달성하는 방법은 여러 가지가 있지만 다음은 Python의 예입니다.

#!/usr/bin/env python

import os
import glob
import time
import subprocess

if __name__ == '__main__':
    mtimes = dict()

    while True:
        for f in glob.glob('*.txt'):
            if f not in mtimes:
                mtimes[f] = os.path.getmtime(f)

            if mtimes[f] != os.path.getmtime(f):
                print("File {} was modified. Executing restart.sh.".format(f))
                mtimes[f] = os.path.getmtime(f)                
                output = subprocess.check_output('./restart.sh')
                print(output)

        time.sleep(1)

환경에 따라 조정해야 할 수도 있습니다.

  • glob.glob('*.txt')모니터링하려는 파일의 검색 패턴입니다.
  • subprocess.check_output('./restart.sh')스크립트를 호출하는 곳입니다. 다른 곳에 있을 수도 있습니다.
  • time.sleep(1)초 단위의 검사 사이의 지연입니다.

답변2

저는 inotifywait를 선택하겠습니다. 생성, 수정, 삭제, 이동에 대한 시스템 호출을 살펴보고 이를 감지하면 수행할 작업을 셸에서 스크립트를 작성할 수 있습니다.

관련 정보