zsh zmv로 파일 여러 개 한 번에 이름 바꾸기
조회 0 · 댓글 0
확장자를 바꾸거나 접두사를 붙이는 식으로 파일 수십 개 이름을 손봐야 할 때, for 루프에 mv를 끼워 돌리면 패턴이 조금만 복잡해져도 금방 실수합니다. zsh에는 zmv라는 일괄 이름 변경 함수가 들어 있어서 패턴 하나로 끝낼 수 있습니다. macOS 기본 셸이 zsh라 따로 설치할 필요는 없고, 자동 로드 함수라 한 번 올려주기만 하면 됩니다.
autoload -U zmv사용법은 검색 패턴과 치환 패턴 두 개를 주는 것입니다. 괄호로 묶은 부분이 캡처 그룹이 되고, 치환 쪽에서 $1, $2로 가져다 씁니다. 예를 들어 .markdown을 전부 .md로 바꾸려면 다음과 같이 합니다.
zmv '(*).markdown' '$1.md'실제로 돌리기 전에 -n을 붙이면 아무것도 건드리지 않고 어떤 이동이 일어날지만 출력합니다. 패턴이 의심스러우면 항상 먼저 확인하는 편이 안전합니다. 와일드카드를 그대로 양쪽에 쓰고 싶으면 -W를 쓰고(zmv -W '*.markdown' '*.md'), 원본을 남기고 싶으면 이동 대신 -C로 복사, -L로 링크를 만들 수 있습니다. 덮어쓰기가 걸릴 수 있으니 반드시 -n으로 먼저 결과를 본 뒤 실행하길 권합니다.
🔗 https://zsh.sourceforge.io/Doc/Release/User-Contributions.html
로그인 후 답글을 남길 수 있습니다.