【发布时间】:2015-02-05 12:54:02
【问题描述】:
我正在尝试使用 bash 从几个单行文本文件中读取数据,每个文件都在自己的目录中,然后将它们输出到一个主文件中,每个文件都在一个新行中。
我的输入文件的数据结构是这样的;
Store# online backoffice win7
我使用 find 遍历每个目录,并将文件内容分类到一个变量中。问题是我似乎无法让每次通过都将数据放在换行符上。这是我的代码;
#!/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
【问题讨论】:
-
看来你只想要
cat /home/sites*/processors.txt > ~/master.txt。你是在 Windows 机器上阅读你的文件master.txt吗? -
是的,在 Windows 机器上阅读。
-
您可能需要使用
unix2dos实用程序将 unix 换行符转换为 dos 换行符,或者将您的编辑器设置为处理 unix 换行符(如果您有一个不错的编辑器,它应该是可行的)。 -
您应该在向其中添加新文本时引用
${final},否则您会丢失所有换行符。而且无论如何您都会丢失shell命令中的换行符。