Назовите файлы после команды split
Есть большой файл, который я разделил в bash. я использую
split -l 20000 -d "job1" "job1"
где задание 1 - входной файл - как я могу изменить имя выходного файла, чтобы он генерировал job1_1,job1_2,gob1_3...,job1_12.....
Есть ли простой способ сделать это?
2 ответа
TL;DR Ваша команда
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
Если вы имеете в виду просто добавить подчеркивание, то:
split -l 20000 -d "job1" "job1_"