파일 확장자를 바꾸는 방법

파일 확장자를 바꾸는 방법

스크립트 파일 확장자를 바꾸고 싶습니다.

그래서 우리는 다음을 수행했습니다.

 new_name=` echo run_fix.bash  |  sed 's/[.].*$//' `
 new_file_extension=".in_hold.txt"
 new_name=$new_name$new_file_extension

 echo $new_name
 run_fix.in_hold.txt

하지만 내 생각엔 내 방법이 별로 우아하지 않은 것 같아

참고 - 스크립트 확장자는 bash, perl 또는 python이 될 수 있고 대상 확장자는 "." 이후의 어떤 것이든 가능합니다. 우리는 글로벌 교체를 원합니다


저는 레드햇 7.2를 사용하고 있습니다.

답변1

old_name=run_fix.bash
new_name=${old_name%.bash}.in_hold.txt

printf 'New name: %s\n' "$new_name"

.bash그러면 값에서 파일 이름 접미사가 제거되어 결과에 $old_name추가됩니다 . .in_hold.txt모든 것이 변수에 할당됩니다 new_name.

값에서 ${variable%pattern}패턴과 일치하는 가장 짧은 접미사 문자열을 제거하는 확장은 다음과 같습니다 .pattern$variable표준 매개변수 확장.

바꾸다어느파일 이름 접미사(예: 파일 이름의 마지막 점 뒤의 모든 항목):

new_name=${old_name%.*}.new_suffix

패턴은 .*마지막 점 및 그 뒤의 모든 점과 일치합니다(이 점은 제거됩니다). %%대신 %사용 한다면가장 긴패턴과 일치하는 하위 문자열이 제거됩니다(이 경우 그 이후의 모든 항목이 제거됩니다).첫 번째문자열의 점). 문자열에 점이 포함되어 있지 않으면 변경되지 않습니다.

답변2

renameLarry Wall의 명령을 시도해 보세요 . 모든 시스템에 기본적으로 설치되지는 않지만 일부 시스템에는 이 이름을 가진 다른 명령이 있습니다. 확실히 데비안 기반 시스템에서 작동합니다.

renamesed파일 이름 에 사용됩니다 .

관련 정보