A ferramenta recomendada para renomear grupos de arquivos é rename
, isso fará seu trabalho.
rename -n 'our $i++; s/_DNH_\K\d+_\d+(.*)\..*/${i}_8$1/' DA*.dat.*
Eu basicamente dividi um arquivo em 8 arquivos.
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat #Original File
Eu tenho 8 novos arquivos abaixo do nome do arquivo.
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
Eu quero renomear esses arquivos abaixo do nome:
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
Como posso fazer isso no script de shell unix?
A ferramenta recomendada para renomear grupos de arquivos é rename
, isso fará seu trabalho.
rename -n 'our $i++; s/_DNH_\K\d+_\d+(.*)\..*/${i}_8$1/' DA*.dat.*
Você pode selecionar a ferramenta certa para começar a cuspir.
split -a 1 --numeric-suffixes=1 -n 8 myfile myFile_from_8_
isso dividirá myFile
nas 8 partes com o nome começando com myFile_from_8_N
(O N
é de 1 a 8)
Ou até mesmo você pode simular a divisão com o comando awk
como abaixo com o número X de registros em cada arquivo dividido (na amostra X=100
, significa 100 registros por arquivo):
awk 'NR%100==1{ file=sprintf("myFile_from_8_%d",((++c)) )} {print >file}' myFile