파일을 복사하고 파일 이름의 태그를 바꾸시겠습니까?

파일을 복사하고 파일 이름의 태그를 바꾸시겠습니까?

저는 오랫동안 프로젝트 오일러(Project Euler)에 참여해 왔습니다. 나는 다음 문제를 위해 새 폴더를 쉽게 만들 수 있는 프로젝트 구조를 가지고 있으며 시작하기 위한 몇 가지 상용구 golang 파일을 가지고 있습니다.

ProjectEuler/001/001.go
ProjectEuler/001/001_test.go
ProjectEuler/002/002.go
ProjectEuler/002/002_test.go
...
ProjectEuler/new_question_stub/xxx.go
ProjectEuler/new_question_stub/xxx_test.go

새 이슈 폴더를 생성할 때 다음 명령을 실행합니다.

ProjectEuler $ mkdir 003
ProjectEuler $ cd 003
ProjectEuler/003 $ cp ../new_question_stub/xxx.go 003.go
ProjectEuler/003 $ cp ../new_question_stub/xxx_test.go 003_test.go

"특정 디렉터리의 모든 파일을 현재 디렉터리로 복사하되 토큰 xxx를 003으로 바꾸십시오"라고 말할 수 있는 방법이 있어야 한다고 생각합니다. 한 번의 클릭으로 복사하고 이름을 바꾸는 명령일 필요는 없습니다. 복사하기는 쉬운데 복사한 후 이름을 어떻게 바꾸나요?

편집: 내 사용 사례는 파일이 두 개뿐인 매우 간단한 사례이지만 파일 수에 관계없이 이 작업을 수행할 수 있는 방법을 찾고 있습니다.

답변1

for루프를 사용해도 괜찮나요? 좋다

for file in ../new_question_stub/*; do cp "$file" "003${file#*xxx}"; done

아마도 이에 대한 함수를 정의하고 싶을 수도 있습니다.

답변2

먼저 모든 xxx_*파일을 복사한 후 perl rename다음을 사용하여 이름을 바꿀 수 있습니다.

rename "s,^xxx,"$(basename $(pwd))"," *

관련 정보