와일드카드(*)를 이용해 여러 파일을 한번에 이동/삭제/링크할 수 있는 유틸리티인 mmv를 소개합니다
한 백개정도 되는 파일명 중간에 일괄적으로 문자를 추가해야하는 일이 생겼는데, 쉘 스크립트 만들긴 싫어서.. (정확힌 잘 못짜서;) 분명히 뭔가 유틸이 있을거같아서 찾아보니 mmv를 많이 쓴다고 합니다.
소스는 위 링크를,
매뉴얼(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' 형식으로 변경
'Software > development' 카테고리의 다른 글
[GitHub] app 등록이 안될 때 해결방법 (0) | 2022.10.10 |
---|---|
[vim] 한국어 키보드 사용시 문제점 및 해결방법 (Karabiner-Elements) (0) | 2022.09.25 |
[Jenkins] jnlp port:5000 is not reachable (2) | 2022.09.01 |
[PyCharm] redis.asyncio를 찾지 못하는 현상 해결방법 (0) | 2022.08.31 |
[git] 빈 브랜치 만들기 (orphan branch) (0) | 2022.08.03 |