mac -shell 에서 파일명 일괄 변경

차유림·2021년 12월 5일
1
사자_mac_20200912_11.pdf
다람쥐_mac_20200912_21.pdf
코끼리_mac_20200912_32.pdf
이구아나_mac_20200912_09.pdf
.
.

이런 파일명을 아래처럼 바꾸고 싶다.
한번에!

사자.pdf
다람쥐.pdf
코끼리.pdf
이구아나.pdf
.
.

따로 프로그램 사용하지 않고
shell로만 할 수 있지 않을까?

할 수 있다!
파일 이동 또는 파일명 변경할 때 사용하는 mv를 업그레이드한(?)
zmv를 사용한다.
zmv 내장함수는 패턴을 기반으로 동작한다.

zmv load

zmv를 사용하려면 먼저 로드를 해줘야 한다.
autoload zmv 를 입력한다.

위 command를 .zshrc파일에 추가하면
zsh 시작할때 함수를 로드해서 세션에서 바로 사용할 수 있다.

이제 zmv를 입력하면 아래와 같이 간단한 설명이 출력된다.

사용법

zmv [OPTIONS] oldpattern newpattern
으로 사용할 수 있다고 친절하게 알려준다.

옵션

옵션은 다음과 같다.

-f: Force overwriting of destination files
-i: Interactive prompt for each operation
-n: No execution, just print what happens
-v: Verbose—print a line as it is executed
-w: Implicitly add parenthesis to wildcards in the pattern
-W: Like -w, but turn wildcards in replacement patterns into references

확장자 변경

폴더내 html 파일을 md 파일로 변경하려고 한다.
와일드카드(*)를 패턴으로 대체하기 위해 -W 옵션을 사용한다.
-v 옵션도 함께 사용하면 어떻게 동작하는지 알려준다.

zmv -W '*.html' '*.md'

정규식 패턴 변경

이번엔 처음 하고자했던 파일명 변경이다.
zmv는 패턴을 기반으로 동작한다고 했다.

zmv [OPTIONS] oldpattern newpattern

oldpattern에서 원하는 부분을 ()에 담아두고
newpattern에서 ${1}처럼 그룹 순서에 맞게 불러와서 적용할 수 있다.

zmv '(*)_mac_20200912_*.pdf' '${1}.pdf'
_mac_202000912 앞에있는 이름을 그룹으로 묶어서
새로운 파일명 ${1} 에서 사용하겠다는 뜻이다.

옵션 사용

옵션중 -n을 사용하면 실행은 되지 않고
어떤 파일들이 어떻게 변경될 것인지 먼저 확인해볼 수 있다.
이걸로 먼저 어떤 파일들이 어떻게 적용되는 지 확인하고
바꾸면 안전하게 변경이 가능하다.

참고

profile
🎨프론트엔드 개발자💻

0개의 댓글