我有一个通过 UDP 发送数据的传感器。我使用 netcat 并使用重定向将数据写入文件。我使用的特定命令是nc -ul 7954 > data.dat
将所有传入数据保存到文件中。我想想出某种方法来“分块”(又称:拆分)10 MB 后的数据,以便没有文件大于大小限制。
该操作系统是精简版的 Ubuntu Linux,uname -a 给出:Linux ZeroPi 4.14.111 #189 SMP Fri Apr 23 17:07:22 CST 2021 armv7l armv7l armv7l GNU/Linux
有没有方法可以通过命令行对重定向文件进行分块/拆分?
答案1
如果你有 GNU split,你可以使用类似
nc -ul 7954 | split -b 10M -d - data.dat.
请参阅 man split 以了解更多选项。
使用 POSIX 分割时,您必须使用字母后缀而不是数字后缀。
在回答这个问题时,问题并没有说明命令将运行多长时间或运行多少数据,或者将如何使用生成的文件。如果预计管道将运行很长时间,那么这个简单的解决方案可能不够用。
可能需要额外思考的问题:
- 终止的进程可能需要重新启动。
- 在处理数据的程序中处理文件切换。
- 如果数量或总大小超出限制,则删除旧的输出文件。
- 当生成的数字后缀
split
达到一定限制时,可能会溢出或环绕。