Bash cat多个txt文件后的换行符

Bash cat多个txt文件后的换行符,bash,newline,cat,Bash,Newline,Cat,我试图使用bash从几个单行文本文件中读取数据,每个文件都在自己的目录中,然后将它们输出到一个主文件中,每个主文件位于一个新行 我的输入文件的数据结构如下 Store# online backoffice win7 我在每个目录中循环查找文件内容,并将其转换为一个变量。问题是,我似乎无法让每次传递都将数据放在换行符上。这是我的密码 #!/bin/bash #Find all sites stores=$(find /home/sites*/ -maxdepth 0) for store

我试图使用bash从几个单行文本文件中读取数据,每个文件都在自己的目录中,然后将它们输出到一个主文件中,每个主文件位于一个新行

我的输入文件的数据结构如下

Store# online backoffice win7
我在每个目录中循环查找文件内容,并将其转换为一个变量。问题是,我似乎无法让每次传递都将数据放在换行符上。这是我的密码

#!/bin/bash

#Find all sites
stores=$(find /home/sites*/ -maxdepth 0)


for store in $stores; do
  final=${final}$(cat ${store}\processors.txt)"\n"
done

printf "${final}" > ~/master.txt
我在主文件中得到的是

Store# online backoffice win7Store# online backoffice win7

您可以使用以下一行代码替换脚本:

find /home/sites* -name "processors.txt" -exec cat {} + > ~/master.txt
当您在windows机器中阅读时,您可能希望在行尾插入回车符:

 find /home/sites* -name "processors.txt" -exec cat {} + | sed -e 's/$/\r/' > ~/master.txt

似乎您只需要
cat/home/sites*/processors.txt>~/master.txt
。您是否在windows机器上读取文件
master.txt
?是的,在windows机器上读取。您可能需要使用
unix2dos
实用程序将unix换行符转换为dos换行符,或者将编辑器设置为处理unix换行符(如果您有一个像样的编辑器,它应该是可行的)。您应该引用
${final}
向其中添加新文本时,或者您将丢失所有换行符。另外,您也将丢失shell命令中的换行符。谢谢!我将尝试一下find/home/sites*-name“processors.txt”-exec cat{}+>~/master.txt。谢谢大家!@3030银行,不客气。请接受答案:)