【发布时间】:2020-12-16 12:12:08
【问题描述】:
我有这个文件夹结构,其中包含 300 多个文件夹,所有文件夹名称不同,但 csv 文件名相同:
some folder name > file_name.csv
some other folder name > file_name.csv
...
another folder name > file_name.csv
所有文件都有一个标题行,我正在尝试将所有文件合并到一个只有一个标题的文件中。
查看了具有类似问题的问题并已经到了这一点,但这不起作用,并且仍会在最终输出文件中多次输出标题。当我在同一个目录中拥有不同名称的所有文件时,awk 'NR == 1 || FNR > 1' *.csv >> $OUTPUT_LOCATION \; 可以工作。有人可以解释为什么当我的文件位于不同目录中时这不起作用并提出替代方案吗?
rm -f $OUTPUT_LOCATION
find . -name 'file_name.csv' \
-exec awk 'NR == 1 || FNR > 1' {} >> $OUTPUT_LOCATION \;
【问题讨论】:
-
那么所有文件的格式都一样吗?你能发布一个格式的例子吗?
-
是的,格式相同,标题相同。标准 CSV 文件。
-
@oguzismail 有效! (在测试数据集上)你能解释一下为什么吗?什么时候文件太多?我有 340 个文件夹要遍历,总共要合并大约 31GB 的数据。
-
如果您用分号标出
-exec,则程序将为每个选定的文件执行一次。但是带有加号的程序每几千个文件运行一次。数量可能会有所不同,但始终是有限的