와일드카드(*)를 이용해 여러 파일을 한번에 이동/삭제/링크할 수 있는 유틸리티인 mmv를 소개합니다

한 백개정도 되는 파일명 중간에 일괄적으로 문자를 추가해야하는 일이 생겼는데, 쉘 스크립트 만들긴 싫어서.. (정확힌 잘 못짜서;) 분명히 뭔가 유틸이 있을거같아서 찾아보니 mmv를 많이 쓴다고 합니다.

 

GitHub - rrthomas/mmv

Contribute to rrthomas/mmv development by creating an account on GitHub.

github.com

소스는 위 링크를,

 

Ubuntu Manpage: mmv - move/copy/link multiple files by wildcard patterns

Powered by the Ubuntu Manpage Repository, file bugs in Launchpad © 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.

manpages.ubuntu.com

매뉴얼(man)은 이 링크를 참고하세요.

 

설치

apt-get install mmv

데비안 계 리눅스라면 이걸로,

brew install mmv

맥이라면 이걸로 설치합니다

 

사용법

mmv [-m|-x|-r|-c|-o|-a|-l|-s] [-h] [-d|-p] [-g|-t] [-v|-n] FROM TO

옵션이 꽤 있는데, 정확한 설명은 man 페이지를 참고해주세요

아무것도 옵션도 넣지 않으면 move만 하고, -n 옵션을 추가하면 dry-run으로 "FROM -> TO" 이런식으로 어떤 파일이 어떻게 변할것이다 라는 것을 출력까지만 해줍니다. dry run 옵션으로 테스트 하고 실제로 적용하는 것을 추천드립니다!

FROM 패턴은 shell glob 패턴을 쓰고 *는 0~N개 문자, ?는 1개 문자를 나타냅니다.

TO 패턴은 #[l|u]N (ex. #1, #2, .. #l5, #u7, ...) 식으로 사용 가능하며, 매칭된 순서를 나타냅니다. l, u는 lowercase, uppercase를 나타내는데 두번째로 매칭된 부분을 전부 소문자로 바꾸고 싶다면 #l2 이렇게 쓰시면 되겠습니다.

 

예제

mmv '*.jpeg' '#1.jpg'

현재 디렉토리의 모든 *.jpeg 파일을 *.jpg로 변경

 

mmv '*abc*' '#1xyz#2'

현재 디렉토리의 모든 파일중 파일명에서 첫번째로 나오는 abc를 xyz로 교체

ex) 123abc.jpg -> 123xyz.jpg, abcabc -> xyzabc

 

mmv '*.html.??' '#1.#2#3.html'

~.html.en, ~.html.de 처럼 된 파일명을 전부 ~.en.html, ~.de.html 처럼 변경

 

mmv '* - * - *.ogg' '#2 - #1 - #3.ogg'

'a - b - c.ogg' 형식으로 된 파일명을 'b - a - c.ogg' 형식으로 변경

반응형