想象一下,我有一个包含许多子目录的目录,每个子目录都包含一些具有相同结构的 CSV 文件(相同的列数并且都包含相同的标题)。
我知道我可以从父文件夹运行类似
find ./ -name '*.csv' -exec cat {} \; > ~/Desktop/result.csv
这可以正常工作,因为每次都重复标题(每个文件一次)。
我也知道我可以做类似的事情sed 1d <filename>
或tail -n +<N+1> <filename>
跳过文件的第一行。
但就我而言,它似乎更专业一些。我想为第一个文件保留一次标题,然后跳过每个文件的标题。
有没有人知道使用标准 Unix 工具(如 find、head、tail、sed、awk 等)和 bash 来实现这一目标的方法?
例如输入文件
/folder1
/file1.csv
/file2.csv
/folder2
/file1.csv
每个文件都有标题的地方:
A,B,C
每个文件有一个数据行1,2,3
所需的输出将是:
A,B,C
1,2,3
1,2,3
1,2,3
标记为重复
我觉得这与其他类似的问题不同,特别是因为这些解决方案在解决方案中引用了 file1 和 file2。我的问题是关于具有任意数量文件的目录结构,我不想一个一个地输入每个文件。