按行分割文件并控制生成的文件扩展名

按行分割文件并控制生成的文件扩展名

有一个用于文件分割的标准命令 - split.

例如,如果我想将一个words文件分成 10000 行的几个块,我可以使用:

split -dl 10000 words wrd

它将生成几个格式为 的文件wrd.01wrd.02依此类推。

但我想要这些文件有一个特定的扩展名 - 例如,我想要获取wtd.01.txt, wrd.02.txtfiles.

有办法做到吗?

答案1

gnu split更多最近的版本 ( ≥ 8.16),可以使用--additional-suffix开关来控制生成的扩展。从man split

--additional-suffix=SUFFIX
              append an additional SUFFIX to file names.

所以当使用该选项时:

split -dl 10000 --additional-suffix=.txt words wrd

生成的片段将自动以 结尾.txt

wrd00.txt
wrd01.txt
.........

答案2

此类任务最好使用 shell 进行管理。使用 split,然后编写一个简单的循环来重命名文件。例如

for file in wrd.*
do
    mv "$file" "$file.txt"
done

会重命名您的wrd.01、wrd.02等文件,以便它们都有.txt扩展名。

答案3

不是使用split,但您可以在之后轻松地重命名它们,或者您可以在 中执行此操作awk

awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile

相关内容