如何分割大文件?

如何分割大文件?

我怎样才能传递 list.txt 中的所有文件,如下所示

file1_1.txt
file1_2.txt
file1_3.txt
file1_4.txt

split命令(目录中还有其他 txt 文件)并使其返回编号的部分(假设 file1_1.txt 将被分成 4 个部分)

file1_1_1.txt;
file1_1_2.txt;
file1_1_3.txt;
file1_1_4.txt 

等等....

答案1

为了确保没有换行,您可以使用除 之外的其他选项c

split -n #number

按 #number 个块分割文件,这样你就可以确保它们是相等的,并且不会出现断行的情况。示例

split -n 4 file.txt

这会将 file.txt 分成 4 个块。

或者你可以按行数拆分

split -l #number-of-lines

例子

split -l 200 file.txt

这会将 file.txt 拆分成每个文件 200 行。但这并不准确,因为所有文件的长度都相同,因为最后一个文件的长度可能小于所选的数字。

现在来谈谈命名。命令 split 的默认设置是使用默认后缀“x”和默认前缀“aa”、“ab”、“ac”...

因此,为了更改这些默认值,您必须声明要使用的后缀。

对于你的情况你可以使用

split -n #number file1_1.txt file1_1.

输出如下file1_1.aa file1_1.ab file1_1.ac

否则,你可以使用以下方法将默认前缀更改为数字-d

  split -n #number -d file1_1.txt file1_1.

输出如下file1_1.00 file1_1.01 file1_1.02

awk因此,除非您使用某些命名或sed使用 REGEX,否则您无法使用默认拆分来获得所需的命名。

现在从文件中读取一组文件,称为files.list

while IFS= read -r file

do split -n #number -d "$file" "$file"

done < files.list

更新:我来到这个https://unix.stackexchange.com/questions/32626/split-a-file-by-line-and-have-control-over-resulting-files-extension

根据第二个答案

在 gnu split 的最新版本 (≥ 8.16) 中,可以使用 --additional-suffix 开关来控制生成的扩展。来自 man split:

--additional-suffix=SUFFIX 在文件名后附加一个额外的后缀。因此当使用该选项时:

split -dl 10000 --additional-suffix=.txt words wrd 得到的片段将自动以 .txt 结尾:

wrd00.txt wrd01.txt

因此,如果您的拆分版本> 8.16,那么您可以像这样满足您的需求

split -n #number -d --additional-suffix=.txt file1_1.txt file1_1-

所以输出就像

file1_1-00.txt file1_1-01.txt file1_1-02.txt .....

答案2

while read file; do split <some options> "$file"; done < list.txt

如果您的文件名可以包含空格或反斜杠,请改用以下命令:

while IFS= read -r file; do split <some options> "$file"; done < list.txt

答案3

以下是我的粗略台词:

awk -F'.' '{$3=$1;print $1"."$2" "$3"_"}' list.txt | xargs -n2 split --numeric-suffixes=1 -n 4 --suffix-length=1 --additional-suffix=".txt"

解释

该文件包含以下条目:

file1_1.txt
file1_2.txt
file1_3.txt
file1_4.txt

我们用 awk 取出这些,并使用点作为分隔符,创建两列列表

file1_1.txt file1_1_
file1_2.txt file1_2_
file1_3.txt file1_3_
file1_4.txt file1_4_

接下来,xargs 获取该输出,每次执行两个条目 (-n2),然后运行 ​​split,使用从 1 开始的数字后缀,拆分为 4 个文件,并在末尾添加“.txt”。以下是该单行程序的演示:

在此处输入图片描述

相关内容