Bash/터미널을 사용하여 파일 이름을 변환하는 방법

Bash/터미널을 사용하여 파일 이름을 변환하는 방법

파일이 잔뜩 있어요.

academic-cap.svg         arrow-narrow-right.svg   
ban.svg                  chart-bar.svg
adjustments.svg          arrow-narrow-up.svg      
beaker.svg               chart-pie.svg
...
...

나는 바꾸고 싶다

  1. 첫 글자와 대시 뒤는 대문자로 표기하세요.
  2. 대시 제거
  3. 마지막에 아이콘 추가
  4. 파일 이름을 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)

관련 정보