파일이 잔뜩 있어요.
academic-cap.svg arrow-narrow-right.svg
ban.svg chart-bar.svg
adjustments.svg arrow-narrow-up.svg
beaker.svg chart-pie.svg
...
...
나는 바꾸고 싶다
- 첫 글자와 대시 뒤는 대문자로 표기하세요.
- 대시 제거
- 마지막에 아이콘 추가
- 파일 이름을 svelte로 변경합니다.
AcademicCapIcon.svelte ArrowNarrowRightIcon.svelte
BanIcon.svelte ChartBarIcon.svelte
...
Bash 스크립트 또는 터미널을 어떻게 사용합니까?
답변1
Perl 기반 rename
유틸리티(라고도 함 prename
)를 사용합니다.
rename -n 's/./\U$&/;s/-(.)/\U$1/g;s/\.svg$/Icon.svelte/' -- *.svg
위 명령은 파일 이름 와일드카드 패턴과 일치하는 현재 디렉터리의 각 이름에 세 가지 Perl 대체 작업을 적용합니다 *.svg
.
첫 번째 대체는 s/./\U$&/
파일 이름의 첫 번째 문자를 자체 대문자 변형으로 바꿉니다.
두 번째 대체는 s/-(.)/\U$1/g
대시 뒤에 나타나는 각 문자를 해당 문자의 대문자 변형으로 바꾸는 동시에 대시를 제거합니다.
최종 대체인 s/\.svg$/Icon.svelte/
는 .svg
파일 이름 접미사를 Icon.svelte
.
옵션을 사용 -n
하면 rename
파일 이름 변환이 표시되지만 수행되지는 않습니다. 나중에 파일 이름을 자세하게 바꾸 -n
도록 변경할 수 있습니다 .-v
질문에 이름을 지정하는 예:
$ ls
academic-cap.svg ban.svg
adjustments.svg beaker.svg
arrow-narrow-right.svg chart-bar.svg
arrow-narrow-up.svg chart-pie.svg
$ rename -n 's/./\U$&/;s/-(.)/\U$1/g;s/\.svg$/Icon.svelte/' -- *.svg
rename(academic-cap.svg, AcademicCapIcon.svelte)
rename(adjustments.svg, AdjustmentsIcon.svelte)
rename(arrow-narrow-right.svg, ArrowNarrowRightIcon.svelte)
rename(arrow-narrow-up.svg, ArrowNarrowUpIcon.svelte)
rename(ban.svg, BanIcon.svelte)
rename(beaker.svg, BeakerIcon.svelte)
rename(chart-bar.svg, ChartBarIcon.svelte)
rename(chart-pie.svg, ChartPieIcon.svelte)