首页 > 解决方案 > 将目录树中的所有文件连接到带有路径分隔符的单个文件中

问题描述

例如,我有以下结构

mydir/a/fileA.txt
mydir/b/fileB.js
mydir/fileC.js

我想将mydir目录中所有文件的内容(递归)连接到output.txt- 在每个文件内容之前应该包含此分隔符(作为第一行)---next-file->>>:和此文件的路径(从 mydir/.. 开始)由新行包裹。所以上面例子的期望输出应该是

---next-file->>>: mydir/a/fileA.txt

Im file A

---next-file->>>: mydir/b/fileB.js

Im file B

---next-file->>>: mydir/fileC.js

Im file C

我尝试了下面的代码,但不知道如何在每个文件路径中包含分隔符

find mydir/ -exec cat {} \; > output.txt

标签: linuxbashmacos

解决方案


对于cat命令之间的文本插入,使用多个-execs。

find -type f -exec echo '---next-file->>>:' {}  \; -exec echo "" \; -exec cat {} \; -exec echo "" \;

推荐阅读