> 파일 및 디렉토리 관리 > mmv

mmv: 여러 파일을 패턴으로 이동/복사/링크하기

mmv 명령어는 여러 파일을 특정 패턴을 기준으로 이동, 복사, 링크, 또는 이름을 변경하는 데 사용되는 도구입니다. 정규 표현식과 유사한 와일드카드 패턴 매칭을 지원하여 대량의 파일을 일괄적으로 처리할 때 유용합니다.

개요

mmv는 'mass move'의 약자로, 여러 파일을 한 번에 처리하는 데 특화된 유틸리티입니다. `mv`가 개별 파일을 이동/이름 변경하는 데 주로 사용되는 것과 달리, mmv는 `*.jpeg`와 같은 와일드카드 패턴을 사용하여 원본 파일 집합을 정의하고, 이를 새로운 패턴으로 변환하여 대상 파일 집합을 생성합니다. 특히, `rename`이 이름 변경 기능에 집중하는 반면, `mmv`는 복사(`cp`), 링크(`ln`), 이동(`mv`) 기능까지 모두 통합하여 제공한다는 장점이 있습니다.

주요 특징

mmv 명령어의 주요 특징은 다음과 같습니다.

  • 와일드카드 패턴을 사용하여 여러 파일을 일괄적으로 처리합니다.
  • 파일을 이동(`mv`), 복사(`cp`), 링크(`ln`), 이름 변경하는 기능을 통합 제공합니다.
  • `rename`과 유사하지만, 기능이 더 다양하고 사용법이 직관적입니다.
  • 충돌이 발생할 경우 경고 메시지를 출력하여 실수를 방지합니다.

mmv와 rename의 차이점

mmv와 rename은 모두 파일 이름 일괄 변경에 사용되지만, 작동 방식에 차이가 있습니다.

  • mmv: 와일드카드(`*`, `?`, `[ ]`)를 사용하여 패턴을 정의하고, 숫자(#1, #2)로 캡처된 부분을 재구성합니다. 복사/이동/링크 기능까지 제공합니다.
  • rename: Perl 정규 표현식(`s/pattern/replacement/`)을 사용하여 이름을 변경하는 데 특화되어 있습니다.

주요 옵션

mmv 명령어는 파일 처리 방식과 옵션을 통해 세부적인 동작을 제어할 수 있습니다.

1) 파일 처리 옵션

2) 패턴 매칭

생성된 명령어:

명령어를 조합해 보세요.

설명:

`mmv` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

mmv 명령어의 다양한 사용 예시를 통해 기능을 익혀보세요.

파일 확장자 변경

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

현재 디렉토리의 모든 `.jpeg` 확장자를 `.jpg`로 변경합니다.

파일 이름에 접두사 추가

mmv '*.txt' 'doc_#1.txt'

`doc_` 접두사를 모든 `.txt` 파일에 추가합니다.

디렉토리 이동

mmv '*.log' '/var/log/#1.log'

현재 디렉토리의 모든 `.log` 파일을 `/var/log` 디렉토리로 이동합니다.

대소문자 변경

mmv '*.*' '#l1.#l2'

파일명의 대문자를 소문자로 변경합니다.

변경될 결과 미리보기

mmv -n '*.bak' '#1.old'

실제 파일을 변경하지 않고, `.bak` 확장자를 `.old`로 변경했을 때의 결과를 미리 확인합니다.

설치

mmv는 대부분의 리눅스 배포판에 기본 포함되어 있지 않으므로, 아래 명령어를 사용하여 설치해야 합니다.

Debian/Ubuntu

sudo apt update
sudo apt install -y mmv

RHEL/CentOS/Fedora

sudo dnf install -y mmv

Arch Linux

sudo pacman -S mmv

팁 & 주의사항

mmv 명령어 사용 시 유의할 점들을 정리했습니다.

  • mmv의 패턴 문법은 셸의 와일드카드와 유사합니다. `*`는 모든 문자열, `?`는 한 문자를 의미합니다. `from_pattern`의 `*`는 `to_pattern`에서 `#1`, `#2`와 같이 숫자로 참조할 수 있습니다.
  • 파일명이 충돌할 경우, `mmv`는 기본적으로 작업을 수행하지 않고 경고를 출력합니다. `-f` 옵션으로 충돌을 무시하고 강제로 덮어쓸 수 있지만, 데이터 손실에 주의해야 합니다.
  • 정규 표현식과 와일드카드 패턴이 셸에 의해 확장되지 않도록, 반드시 패턴 문자열을 작은따옴표(`'`)로 묶어주어야 합니다.

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.


동일 카테고리 명령어