기본적으로 파일을 8개 파일로 분할했습니다.
DA_TRP_TOTAL-SHIPPED_v1_DNH_2_2_20170502094536.dat #Original File
다음 파일 이름을 가진 8개의 새 파일이 있습니다.
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 쉘 스크립트에서 이 작업을 어떻게 수행할 수 있습니까?
답변1
많은 수의 파일 이름을 바꾸는 데 권장되는 도구는 입니다 rename
. 그러면 작업이 완료됩니다.
rename -n 'our $i++; s/_DNH_\K\d+_\d+(.*)\..*/${i}_8$1/' DA*.dat.*
답변2
침을 뱉는 데 적합한 도구를 선택하는 것부터 시작할 수 있습니다.
split -a 1 --numeric-suffixes=1 -n 8 myfile myFile_from_8_
이는 ( 1-8) myFile
로 시작하는 이름을 가진 8개의 섹션 으로 나뉩니다.myFile_from_8_N
N
또는 다음과 같이 명령을 사용하여 awk
각 분할 파일에 X 레코드를 사용하여 분할을 시뮬레이션할 수도 있습니다(예제에서는 X=100
파일당 100개의 레코드를 의미함).
awk 'NR%100==1{ file=sprintf("myFile_from_8_%d",((++c)) )} {print >file}' myFile