매일 받는 두 개의 파일이 있는데 그 이름을 TRN_HIST_TBL.txt 및 TRN_HIST_TBL_NON_NPI.txt로 바꾸고 싶습니다.

매일 받는 두 개의 파일이 있는데 그 이름을 TRN_HIST_TBL.txt 및 TRN_HIST_TBL_NON_NPI.txt로 바꾸고 싶습니다.

매일 받는 파일이 2개 있습니다.TRN_HIST_TBL_16_AUG_2020그리고TRN_HIST_TBL_NON_NPI_16_AUG_2020이름을 다음으로 바꾸고 싶습니다.TRN_HIST_TBL.txt그리고TRN_HIST_TBL_NON_NPI.txt

아래와 같이 이름 바꾸기 명령을 작성했지만 파일은 하나만 생성됩니다.TRN_HIST_TBL.txt.

mv TRN_HIST_TBL* TRN_HIST_TBL.txt

mv TRN_HIST_TBL_NON_NPI* TRN_HIST_TBL_NON_NPI.txt

답변1

첫 번째 파일에 사용한 glob은 두 파일 모두와 일치합니다. 이로 인해 두 번째 파일이 첫 번째 파일을 덮어쓰게 됩니다. 파일 이름이 지정되는 방식으로 인해 globbing으로 이를 피할 수 있는 방법은 없습니다. 당신이 해야 할 일은 전체 파일 이름을 사용하는 것입니다:

mv TRN_HIST_TBL_16_AUG_2020 TRN_HIST_TBL.txt 

mv TRN_HIST_TBL_NON_NPI_16_AUG_2020 TRN_HIST_TBL_NON_NPI.txt   

답변2

첫 번째 이름 바꾸기(mv)는 두 파일 모두와 일치하므로 두 번째 이름 바꾸기는 즉시 첫 번째 파일을 덮어씁니다.

순서를 바꾸는 것은 도움이 되지 않습니다. 이렇게 하면 이름이 더 긴 파일의 이름이 올바르게 변경되지만 해당 파일과 다른 파일의 이름이 다시 변경됩니다.

추가 참고 사항 및 수정 사항:

귀하의 입력은 TRN_HIST_TBL_16_AUG_2020및 이며 TRN_HIST_TBL_NON_NPI_16_AUG_2020매일 다르며 날짜 부분이 중요하지 않기를 원합니다.

따라서 를 작성하면 mv TRN_HIST_TBL* TRN_HIST_TBL.txt와일드카드는 두 파일 모두와 일치하고 명령은 다음과 같이 확장됩니다.

mv TRN_HIST_TBL_16_AUG_2020 TRN_HIST_TBL_NON_NPI_16_AUG_2020 TRN_HIST_TBL.txt

이것은 단지 두 파일의 이름을 지정합니다 TRN_HIST_TBL.txt.

TRN_HIST_TBL_NON_NPI*현재 일치하는 항목이 없기 때문에 두 번째 명령은 실패합니다 .

이 두 명령을 다른 순서로 실행하면 TRN_HIST_TBL_NON_NPI*파일 하나만 일치하고 다음을 얻습니다.

mv TRN_HIST_TBL_NON_NPI_16_AUG_2020 TRN_HIST_TBL_NON_NPI.txt

다른 명령을 제외하고는 잘 작동합니다.아직두 이름을 일치시키고 두 파일의 이름을 다음으로 바꿉니다.TRN_HIST_TBL.txt

파일 중 하나를 숨기고 다른 파일의 이름을 바꿔야 하며 보다 고유한 이름이어야 합니다.

#.. Will only rename one file.
mv TRN_HIST_TBL_NON_NPI* Hide_TRN_HIST_TBL_NON_NPI.txt
#.. Wildcard will not match that file.
mv TRN_HIST_TBL* TRN_HIST_TBL.txt
#.. Set the final name.
mv Hide_TRN_HIST_TBL_NON_NPI.txt TRN_HIST_TBL_NON_NPI.txt

관련 정보