Linux에서 파일이 생성된 후 즉시 다른 디렉터리로 파일을 이동하는 방법은 무엇입니까? [복사]

Linux에서 파일이 생성된 후 즉시 다른 디렉터리로 파일을 이동하는 방법은 무엇입니까? [복사]

한 디렉터리에 생성된 모든 *.xxx 파일을 다른 디렉터리로 이동하고 싶습니다. 그러나 일단 파일이 생성되면 다른 디렉터리로 이동해야 합니다. 도와주세요. 미리 감사드립니다.

답변1

  1. 배포판에 패키지를 설치합니다 inotify-tools.
  2. inotifywait원하는 디렉터리에 대한 연속 조회를 생성하려면 이 명령을 사용합니다 . 전임자: inotifywait -m -r -e create /src_dir. 이 도구는 파일 시스템의 다른 측면(속성 변경, 쓰기 닫기, 이동, 삭제)을 관찰할 수 있으므로 계속해서 파일을 생성해 보겠습니다.
  3. 알림을 준비하고 계속 실행하려면 이 명령을 사용하고, 충분한 권한이 있는 사용자로 이 명령을 실행하십시오.

    inotifywait -m -r -e create /src_dir |
    while read file; do
          mv /src_dir/*.xxx /dst_dir
    done
    

상해:

  • inotifywait- inotify API를 사용하는 명령. 파일 시스템 이벤트를 모니터링하기 위한 메커니즘을 제공합니다. man inotify더 알아보기.
  • -minotifywait- 첫 번째 이벤트가 발생한 후에도 계속 실행됩니다.
  • -r- 재귀적으로 실행합니다. 이 동작을 원하지 않으면 제거하십시오.
  • -e create- 식별된 이벤트 알림. 우리는 생성을 사용하고 있습니다. 알려진 모든 이벤트를 모니터링하려면 이 매개변수를 생략하세요.
  • /src_dir- 모니터링되는 위치의 매개변수
  • |- 파이프라인 운영자. 한 명령의 출력을 다른 명령의 출력으로 리디렉션합니다.
  • /while (...) done- 이름이 *.xxx인 모든 콘텐츠를 /src_dir이름이 지정된 대상으로 이동합니다 /dst_dir. 이 루프는 명령이 이벤트를 트리거할 때마다 이 이동이 발생하도록 보장합니다 inotifywait.

인간 지도에서 추출됨:

-m, --monitor
Instead  of  exiting  after  receiving  a single event, execute indefinitely.  
The default behaviour is to exit after the first event occurs.

-e <event>, --event <event>
Listen for specific event(s) only.  The events which can be listened for are 
listed in the EVENTS section.  This option can be speci‐fied more than once.  
If omitted, all events are listened for.

-r, --recursive
Watch all subdirectories of any directories passed as arguments.  Watches will be
set up recursively to an unlimited depth.  Symbolic links are not traversed.
 Newly created subdirectories will also be watched.

관련 정보