Shell 递归合并根目录下的所有文件

Shell 递归合并根目录下的所有文件,shell,merge,Shell,Merge,我需要递归地合并根目录下的所有csv文件(任意层次结构),csv文件的末尾可能没有换行符,因此每当我合并两个文件时,我想添加一个新行。 如何在shellscript中执行此操作?使用带有两个-exec选项的find: find $YOUR_DIR -iname '*.csv' -exec cat {} \; -exec echo \; 编辑:另外,如果您的CSV有一个标题,而不是cat,您可以使用sed 1d来抑制第一行: find $YOUR_DIR -iname '*.csv' -exec

我需要递归地合并根目录下的所有csv文件(任意层次结构),csv文件的末尾可能没有换行符,因此每当我合并两个文件时,我想添加一个新行。
如何在shellscript中执行此操作?

使用带有两个-exec选项的find:

find $YOUR_DIR -iname '*.csv' -exec cat {} \; -exec echo \;
编辑:另外,如果您的CSV有一个标题,而不是
cat
,您可以使用
sed 1d
来抑制第一行:

find $YOUR_DIR -iname '*.csv' -exec sed 1d {} \; -exec echo \;

有没有办法回显每个文件的名称而不是新行?是的,将
\{}
作为参数传递给echo,如下所示:
echo\{}。程序
find
将用文件名替换这些括号,但您需要对其进行转义,以便shell不会尝试解释。