파일 이름의 문자열을 바꿔 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

파일 이름의 문자열을 바꿔 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

기본적으로 파일을 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_NN

또는 다음과 같이 명령을 사용하여 awk각 분할 파일에 X 레코드를 사용하여 분할을 시뮬레이션할 수도 있습니다(예제에서는 X=100파일당 100개의 레코드를 의미함).

awk 'NR%100==1{ file=sprintf("myFile_from_8_%d",((++c)) )} {print >file}' myFile

관련 정보