Как переименовать несколько файлов, заменив строку в имени файла?

По сути, я разделил один файл на 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?

0
11.08.2017, 19:11
2 ответа

Рекомендуемым инструментом для переименования пакетов файлов является rename, это сделает вашу работу.

rename -n 'our $i++; s/_DNH_\K\d+_\d+(.*)\..*/${i}_8$1/' DA*.dat.*
2
28.01.2020, 02:33

Вы можете выбрать правильный инструмент, чтобы сначала плюнуть.

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
0
28.01.2020, 02:33

Теги

Похожие вопросы