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

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

sed 또는 다른 명령을 사용하여 아래 형식의 unix 디렉토리에 파일이 있습니다.

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_ 

관련 정보