我想编写一个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
如何实现这个目标?
任何帮助都会提前得到赞赏。
答案 0 :(得分:0)
正如评论中指出的那样,问题可能是因为文件结尾(EOF)前面没有\ n(newLine字符)。
绕过这个问题的一种方法是用换行符替换“---”。希望以下命令解决问题:
(find DIR1/ DIR2/ -type f | xargs -i cat {} ) | sed "s/$/\r/g" > result/final.txt
答案 1 :(得分:0)
您的文件不以换行符结束,因此输出文件中没有换行符。
您应该确保输入文件以换行符结尾,或者在find
命令中添加它们:
find /home/DIR1 /home/DIR2 -type f -exec cat {} \; -exec echo \;