Shell 递归合并根目录下的所有文件
我需要递归地合并根目录下的所有csv文件(任意层次结构),csv文件的末尾可能没有换行符,因此每当我合并两个文件时,我想添加一个新行。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
如何在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不会尝试解释。