사자_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를 사용하려면 먼저 로드를 해줘야 한다.
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
을 사용하면 실행은 되지 않고
어떤 파일들이 어떻게 변경될 것인지 먼저 확인해볼 수 있다.
이걸로 먼저 어떤 파일들이 어떻게 적용되는 지 확인하고
바꾸면 안전하게 변경이 가능하다.