有没有办法将重定向文件分块/拆分成多个文件?

有没有办法将重定向文件分块/拆分成多个文件?

我有一个通过 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达到一定限制时,可能会溢出或环绕。

相关内容