如何将多个文件合并为给定目录中的单个文件

How to merge multiple files into single file in given directories

我想编写一个 shell 脚本来合并给定目录中多个文件的内容。

DIR1 contains sample1.txt sample2.txt
    sample1.txt contents  :---this is sample1 file
    sample2.txt contents  :---this is sample2 file

DIR2 contains demo1.txt demo2.txt
    demo1.txt contents  :---this is demo1 file

我试过了:

(find /home/DIR1  /home/DIR2 -type f | xargs -i cat {} ) > /result/final.txt

成功了!

this is sample2 file  this is sample1 file  this is demo1 file

但是输出显示在一行中,我需要在单独的新行中显示每个文件的输出。 像这样:

this is sample1 file
this is sample2 file  
this is demo1 file

如何实现?

如有任何帮助,我们将不胜感激。

正如评论中指出的,问题可能是因为文件结尾 (EOF) 前面没有 \n(换行符)。

避免此问题的一种方法是用换行符替换“---”。希望以下命令可以解决问题:

(find DIR1/  DIR2/ -type f | xargs -i cat {} ) | sed "s/$/\r/g" > result/final.txt

您的文件不以换行符结尾,因此输出文件中没有换行符。

您应该确保您的输入文件以换行符结尾,或者将它们添加到 find 命令中:

find /home/DIR1  /home/DIR2 -type f -exec cat {} \; -exec echo \;