Bash:连接多个文件并在每个文件之间添加"\newline"?

pim*_*oum 5 bash file cat

我有一个小的Bash脚本,它获取目录的所有Markdown文件,并将它们合并为如下所示:

for f in *.md; do (cat "${f}";) >> output.md; done
Run Code Online (Sandbox Code Playgroud)

它运作良好.现在我想在每个文档之间添加字符串"\newline",如下所示:

for f in *.md; do (cat "${f}";) + "\newline" >> output.md; done
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?上面的代码显然不起作用.

Tom*_*ech 9

如果你想要文字字符串"\newline",试试这个:

for f in *.md; do cat "$f"; echo "\newline"; done > output.md
Run Code Online (Sandbox Code Playgroud)

这假设output.md尚不存在.如果是(并且您希望将其内容包含在最终输出中),您可以:

for f in *.md; do cat "$f"; echo "\newline"; done > out && mv out output.md
Run Code Online (Sandbox Code Playgroud)

这可以防止错误cat: output.md: input file is output file.

如果你想覆盖它,你应该rm在开始之前.


jay*_*ngh 5

你可以做:

for f in *.md; do cat "${f}"; echo; done > output.md
Run Code Online (Sandbox Code Playgroud)

您可以添加echo命令来添加换行符。为了提高性能,我建议将写入移到循环>之外for,以防止在每次迭代时读取和写入文件。