UNIX 디렉토리에 있는 여러 파일의 이름 바꾸기

UNIX 디렉토리에 있는 여러 파일의 이름 바꾸기

나는 unix 디렉토리에서 다음 형식의 파일을 사용하기 위해 sed 또는 다른 명령을 사용합니다.

Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp

이 파일의 이름을 다음 형식으로 바꾸고 싶습니다

Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp

답변1

for file in Owner.Env.File_10513_1200_ver*.expdp; do
    mv "$file" "${file/010513_1200/100613_2300}"
done

답변2

파일이 너무 많지 않으면(수만 개) 이 작업을 수행해야 합니다(그런 다음 ls Owner.Env.File_010513_1200_ver*.expdp파일이 남아 있는지 확인하고 그렇다면 명령을 반복하십시오).

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

많은 수의 파일(그리고 이상한 이름을 가진 파일)을 처리하기 위한 GNU의 대안은 다음과 같습니다:

find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
  xargs -0 rename File_010513_1200_ File_100613_2300_ 

관련 정보