如何将多个文件合并为给定目录中的单个文件
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 \;
我想编写一个 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 \;