实时加入多个文本文件

实时加入多个文本文件

我有纯文本文件a.txtb.txt并且c.txt

我想要一个名为 that 的文件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

相关内容