我在 bash 中拆分了一个大文件。我正在使用
split -l 20000 -d "job1" "job1"
其中 job 1 是输入文件 - 我如何更改输出的命名以便它生成 job1_1、job1_2、gob1_3...、job1_12.....
有什么简单的方法可以做到这一点?
答案1
总结您的命令
split -l 20000 -d "job1" "job1"
每个输出文件包含 20000 行,后缀为数字。输入job1
为输出前缀是job1
。
因此将输出前缀从 更改job1
为job1_
您的命令:
split -l 20000 -d job1 job1_
避免前导零:
split -l 20000 -d job1 job1_; rename 's/_0{1,}([0-9]+)/_$1/' job1_*
避免使用前导零,并使用以下数字后缀开头1
:
split -l 20000 --numeric-suffixes=1 job1 job1_; rename 's/_0{1,}([0-9]+)/_$1/' job1_*
示例 1:
% split -l 20000 -d job1 job1_
% ls -og job1*
-rw-rw-r-- 1 10000000 Mai 29 16:03 job1
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_00
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_01
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_02
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_03
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_04
-rw-rw-r-- 1 1540000 Mai 29 16:09 job1_05
-rw-rw-r-- 1 760000 Mai 29 16:09 job1_06
示例 2:
% split -l 10000 -d job1 job1_; rename 's/_0{1,}([0-9]+)/_$1/' job1_*
% ls -og job1*
-rw-rw-r-- 1 10000000 Mai 29 16:03 job1
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_0
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_1
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_10
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_11
-rw-rw-r-- 1 760000 Mai 29 16:23 job1_12
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_2
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_3
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_4
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_5
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_6
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_7
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_8
-rw-rw-r-- 1 770000 Mai 29 16:23 job1_9
从man split
SYNOPSIS
split [OPTION]... [INPUT [PREFIX]]
-d, --numeric-suffixes[=FROM]
use numeric suffixes instead of alphabetic; FROM changes the start value (default 0)
-l, --lines=NUMBER
put NUMBER lines per output file
答案2
如果您的意思只是添加下划线,那么:
拆分-l 20000-d“作业1”“作业1_”