Linux Enginner

리눅스의 대한 모든 지식들을 공유하고 배울 수 있는 블로그입니다.

리눅스에서 파일 이름 바꾸기 (rename)

리눅스에서 파일 이름을 변경하는 방법은 여러 가지가 있습니다. 단순한 파일 이름 변경부터, 여러 개의 파일을 일괄 변경하는 방법까지 다양한 방식이 존재합니다. 본 글에서는 mv, rename, find 명령어를 이용한 파일 이름 변경 방법을 설명하고, 실전 예제를 통해 활용법을 익혀보겠습니다.


1. mv 명령어를 사용한 파일 이름 변경

리눅스에서 가장 기본적인 파일 이름 변경 방법은 mv 명령어를 사용하는 것입니다.

기본 문법

mv [현재 파일 이름] [새로운 파일 이름]

예제:

mv oldfile.txt newfile.txt

위 명령어를 실행하면 oldfile.txt라는 파일이 newfile.txt로 변경됩니다.

디렉토리 내 파일 이동과 함께 이름 변경

mv example.txt /home/user/documents/new_example.txt

위 명령어는 example.txt 파일을 /home/user/documents/ 디렉토리로 이동하면서 이름도 new_example.txt로 변경합니다.


2. rename 명령어를 사용한 다중 파일 이름 변경

여러 개의 파일 이름을 한 번에 변경할 때는 rename 명령어를 사용하면 효율적입니다.

rename 설치

일부 리눅스 배포판에서는 기본적으로 설치되지 않을 수 있습니다. 다음 명령어로 설치할 수 있습니다.

  • Ubuntu/Debian 계열:
    sudo apt install rename
    
  • CentOS/RHEL 계열:
    sudo yum install rename
    
  • Arch Linux:
    sudo pacman -S perl-rename
    

기본 문법

rename [옵션] '변경 규칙' 파일명

파일 확장자 일괄 변경

예를 들어 .txt 파일을 .bak 파일로 변경하고 싶다면 다음과 같이 실행합니다.

rename 's/\.txt$/.bak/' *.txt
  • s/\.txt$/.bak/ : .txt를 .bak로 변경
  • *.txt : 현재 디렉토리의 모든 .txt 파일에 적용

예제 1: 파일 이름 일부 변경

파일 이름에 포함된 old를 new로 바꾸려면 다음과 같이 실행합니다.

rename 's/old/new/' *.txt

예를 들어 old_document.txt는 new_document.txt로 변경됩니다.

예제 2: 대문자를 소문자로 변경

모든 .JPG 파일을 .jpg로 바꾸려면 다음과 같이 실행합니다.

rename 'y/A-Z/a-z/' *.JPG

3. find와 mv를 활용한 파일 이름 변경

find 명령어와 mv를 조합하여 특정 패턴을 가진 파일을 찾아서 이름을 변경할 수도 있습니다.

특정 확장자의 파일을 일괄 변경

예를 들어 .log 확장자를 .txt로 변경하려면 다음과 같이 실행합니다.

find . -type f -name "*.log" -exec sh -c 'mv "$1" "${1%.log}.txt"' _ {} \;

설명:

  • find . -type f -name "*.log" : 현재 디렉토리에서 .log 파일 찾기
  • -exec sh -c 'mv "$1" "${1%.log}.txt"' _ {} : 각 파일에 대해 .log를 .txt로 변경

특정 문자열이 포함된 파일 이름 변경

예를 들어 backup_으로 시작하는 파일명을 archive_로 바꾸려면 다음 명령어를 사용합니다.

find . -type f -name "backup_*" -exec bash -c 'mv "$0" "${0/backup_/archive_}"' {} \;

4. for 루프를 활용한 파일 이름 변경

for 문을 사용하여 여러 개의 파일 이름을 변경할 수도 있습니다.

예제 1: 확장자 변경

모든 .jpeg 파일을 .jpg로 변경하려면 다음과 같이 실행합니다.

for file in *.jpeg; do
    mv "$file" "${file%.jpeg}.jpg"
done

예제 2: 공백이 있는 파일 이름 변경

파일 이름에 공백이 포함된 경우, _로 대체하는 방법입니다.

for file in *\ *; do
    mv "$file" "${file// /_}"
done

설명:

  • * \ * : 공백이 포함된 파일 찾기
  • "${file// /_}" : 공백을 _로 변경

5. mmv 명령어를 사용한 파일 이름 변경

mmv는 패턴을 이용하여 파일 이름을 변경할 수 있는 강력한 도구입니다.

mmv 설치

  • Ubuntu/Debian 계열:
    sudo apt install mmv
    
  • CentOS/RHEL 계열:
    sudo yum install mmv
    

기본 문법

mmv "old_pattern" "new_pattern"

예제 1: 확장자 변경

모든 .TXT 파일을 .txt로 변경하려면

mmv "*.TXT" "#1.txt"

설명:

  • #1 : 기존 파일 이름에서 확장자 제외한 부분 유지

예제 2: photo_ 접두사 추가

mmv "*.jpg" "photo_#1.jpg"

위 명령어를 실행하면 모든 .jpg 파일 이름 앞에 photo_가 추가됩니다.


6. GUI 파일 관리자에서 파일 이름 변경

터미널 명령어가 익숙하지 않다면 GUI 파일 관리자에서 이름을 변경하는 방법도 있습니다.

Nautilus (GNOME)

  1. 파일을 선택 후 F2를 누르면 이름을 변경할 수 있습니다.
  2. 여러 파일을 선택한 후 우클릭 → "이름 바꾸기"를 선택하여 한꺼번에 변경할 수도 있습니다.

Dolphin (KDE)

  1. 여러 파일을 선택한 후 F2를 누르면 일괄 이름 변경이 가능합니다.

Thunar (XFCE)

  1. Bulk Rename 기능을 사용하여 파일 이름을 일괄 변경할 수 있습니다.

결론

리눅스에서 파일 이름을 변경하는 방법은 다양합니다.

  • 단순한 변경은 mv
  • 여러 개의 파일을 일괄 변경하려면 rename
  • 특정 패턴을 가진 파일을 찾고 변경하려면 find + mv
  • 복잡한 패턴 변경은 mmv
  • GUI 환경에서는 파일 관리자의 "이름 바꾸기" 기능 활용

필요에 따라 적절한 방법을 선택하면 더욱 효율적으로 파일 이름을 관리할 수 있습니다.