스크립트 파일 확장자를 바꾸고 싶습니다.
그래서 우리는 다음을 수행했습니다.
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
rename
Larry Wall의 명령을 시도해 보세요 . 모든 시스템에 기본적으로 설치되지는 않지만 일부 시스템에는 이 이름을 가진 다른 명령이 있습니다. 확실히 데비안 기반 시스템에서 작동합니다.
rename
sed
파일 이름 에 사용됩니다 .