首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Linux将一个多千兆字节的文件分割成大约1.5G的块?

如何使用Linux将一个多千兆字节的文件分割成大约1.5G的块?
EN

Stack Overflow用户
提问于 2015-08-14 23:18:04
回答 2查看 3.4K关注 0票数 2

我有一个可以大于4GB的文件。我使用linux split命令将其拆分成行(这是必需的)。但是,在拆分原始文件之后,我希望拆分文件的大小始终小于2GB。原始文件大小可以从3-5 GB不等。我想在shell脚本中为此编写一些逻辑,并将行数输入到下面的split命令中,以便将拆分的文件大小保持在2GB以下。

代码语言:javascript
复制
split -l 100000 -d abc.txt abc
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 00:56:13

我就是这样解决这个问题的。很抱歉把解决方案发得晚了。

1.声明了一个全局变量DEFAULT_SPLITFILE_SIZE= 1.5Gb

代码语言:javascript
复制
DEFAULT_SPLITFILE_SIZE=1500000000

2.计算出文件中的行数.

代码语言:javascript
复制
LINES_IN_FILE=`wc -l $file | awk '{print $1}'`

echo `date`  "Total word count = ${LINES_IN_FILE}."

3.计算文件的大小.

代码语言:javascript
复制
FILE_SIZE=`stat -c %s "${file}"`

4.文件中每一行的计算大小.

代码语言:javascript
复制
SIZE_PER_LINE=$(( FILE_SIZE / LINES_IN_FILE ))

echo `date`  "Bytes Per Line = $SIZE_PER_LINE"

5.计算了使其成为1.5gb拆分文件所需的行号.

代码语言:javascript
复制
SPLIT_LINE=$(( DEFAULT_SPLITFILE_SIZE / SIZE_PER_LINE ))

echo `date`  "Lines for Split = $SPLIT_LINE"
票数 3
EN

Stack Overflow用户

发布于 2015-08-15 03:00:50

在发布问题之前,最好先参考手册。Split命令提供了按字节拆分文件的选项。下面是您可以在拆分命令的手册页面中找到的选项。

-b, --bytes=SIZE put SIZE bytes per output file

代码语言:javascript
复制
split --bytes=1500000000 abc.txt abc

您不需要显式指定行数。这个命令符合你的目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32019927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档