여러 텍스트 파일을 실시간으로 결합

여러 텍스트 파일을 실시간으로 결합

일반 텍스트 파일 a.txtb.txt있고c.txt

big.txt나는 a, b, c를 연결한 결과라는 파일을 원합니다 .

a, b 또는 c를 편집하고 추가하면 big.txt가 자동으로 업데이트/추가됩니다.

Linux/Unix에서 이 작업을 어떻게 수행합니까?

답변1

질문을 두 부분으로 나눕니다.

  1. big.txt소스 파일이 변경되면 파일 생성
  2. 소스 파일이 변경되면 자동으로 실행 1부

파트 #1은 make소스 파일 편집을 기반으로 파생물을 만드는 기능을 하는 작업입니다. 아래 예에서는 "big.txt"가 "a.txt", "b.txt" 및 "c.txt"에 종속되어 있다고 말합니다. 을 실행하면 make소스 파일의 타임스탬프가 의 타임스탬프와 비교되어 big.txt최신인 경우 big.txt업데이트됩니다.

$ ls        
Makefile
$ cat Makefile 
big.txt: a.txt b.txt c.txt
    cat a.txt b.txt c.txt > big.txt
a.txt:
b.txt:
c.txt:
$ touch {a,b,c}.txt   
$ make
cat a.txt b.txt c.txt > big.txt
$ make
make: `big.txt' is up to date.
$ echo 'hello world' > a.txt 
$ make
cat a.txt b.txt c.txt > big.txt

이제 파일 형식을 편집 make하고 big.txt를 생성한 후필요하다면.

파트 2는 다양한 방법으로 완료할 수 있습니다. 가장 간단한 방법은 make백그라운드 루프에서 실행하는 것 입니다 while :; do make; sleep 60; done &. 예를 들면 다음과 같습니다. 이것은 특별히 효율적이지 않으므로 iwaitnotify파일의 변경 사항을 관찰한 다음 make를 실행하는 데 사용할 수 있습니다 . 바라보다이 답변은 예시입니다.


make및에 대한 중요 참고 사항 Makefile: 사용들여 쓰기.이것은 역사상 이상한 일이다 make.

관련 정보