По сути, я разделил один файл на 8 файлов.
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat #Original File
Я получил 8 новых файлов, как показано ниже filename.
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.aa
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ab
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ac
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ad
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ae
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.af
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ag
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat.ah
Я хочу переименовать эти файлы следующим образом:
DA_TRP_TOTAL-SHIPPED_v1_DNH_1_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_3_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_4_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_5_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_6_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_7_8_20170502094536.dat
DA_TRP_TOTAL-SHIPPED_v1_DNH_8_8_20170502094536.dat
Как я могу сделать это в сценариях оболочки unix?
Рекомендуемым инструментом для переименования пакетов файлов является rename
, это сделает вашу работу.
rename -n 'our $i++; s/_DNH_\K\d+_\d+(.*)\..*/${i}_8$1/' DA*.dat.*
Вы можете выбрать правильный инструмент, чтобы сначала плюнуть.
split -a 1 --numeric-suffixes=1 -n 8 myfile myFile_from_8_
это разделит myFile
на 8 частей, название которых начинается сmyFile_from_8_N
(N
состоит из 1 -8)
Или даже вы можете смоделировать разделение с помощью команды awk
, как показано ниже, с X количеством записей в каждом разделении -редактированных файлов (в образце X=100
, что означает 100 записей в файле):
awk 'NR%100==1{ file=sprintf("myFile_from_8_%d",((++c)) )} {print >file}' myFile