/opt/jboss/QueueStandalone/cron
폴더에 있는 모든 파일 .sh
의 파일 이름을 바꾸려면 다음 명령을 사용합니다 .
find /opt/jboss/QueueStandalone/cron -name '*.sh' -exec sed -i -e 's/Old-name/New-name/g' {} \;
.sh
제 질문은 모든 파일을 백업 한 후 다음 옵션을 사용하는 데 필요한 쉘 스크립트를 작성하고 싶다는 것입니다.
Old-name=
New-name=
스크립트를 사용하여 이 두 값을 입력하는 경우 .sh
모든 파일을 변경해야 합니다.
답변1
쉘 변수 이름에는 대시가 포함될 수 없습니다.
old_name="foo"
new_name="bar"
sed -i -e "s/${old_name}/${new_name}/g"
하지만 이전 이름과 새 이름에 해석 가능한 내용 sed
(예: 점 등)이 포함되어 있지 않은지 확인하세요. 아니면 다음 문자를 이스케이프 처리해야 합니다.
old_name="foo\.sh"
new_name="bar.sh"
그러나 전체 접근 방식이 이상해 보입니다. 일반적으로 스크립트에 매개변수를 전달하고 다음과 같이 호출합니다.
/path/to/script "$old_name" "$new_name"
또는
OLD_NAME=foo NEW_NAME=bar /path/to/script