【发布时间】:2019-06-01 08:46:42
【问题描述】:
我的问题类似于 How to sort files in paste command? - 已经解决了。
我在一个文件夹中有 500 个 csv 文件(每日降雨数据),命名约定为 chirps_yyyymmdd.csv。每个文件只有 1 列(降雨量值),100,000 行,没有标题。我想按时间顺序将所有 csv 文件合并到一个 csv 中。
当我尝试这个脚本 ls -v file_*.csv | xargs paste -d, 只有 100 个 csv 文件时,它起作用了。但是当尝试使用 500 个 csv 文件时,我得到了这个错误:paste: chirps_19890911.csv: Too many open files
如何处理上述错误?
为了快速解决问题,我可以将 csv 分成两个文件夹并使用上述脚本进行处理。但是,问题是我有 100 个文件夹,每个文件夹中有 500 个 csv。
谢谢
样本数据和预期结果:https://www.dropbox.com/s/ndofxuunc1sm292/data.zip?dl=0
【问题讨论】:
-
欢迎来到 StackOverflow!在我看来,您的问题似乎不是关于 sed、awk 或 csv,而是关于如何使用 shell。如果这不是一个真正的编程问题,那么它可能与 StackOverflow 无关。您可能需要考虑在此处关闭它并将您的问题的修订版本发布到SuperUser.com 或unix.stackexchange.com。还要考虑在你的 shell 中使用
for循环。这是按顺序处理文件的规范方法。 Parsinglsusually isn't a great idea.. -
嗨@ghoti 感谢您的回答,我已经修改了问题并删除了不必要的标签
-
你的文件夹叫什么名字?
-
@Cyrus 文件夹名是一年,从1900到2018
-
伟大的问题通常有一个Minimal, Complete, Verifiable Example。你能给我们展示一些示例输入和输出吗?如果
paste解决方案不起作用,其他方法可能会起作用,但很高兴知道我们正走在正确的轨道上,能够重现成功的结果。