Linux에서 파일 이름 바꾸는 방법

새로운 리눅스 운영 체제에 익숙하지 않으신가요? 그렇다면 파일 및 폴더 이름을 변경하는 것과 같은 일반 작업은 예전과 다를 수 있습니다. 하지만 걱정하지 마세요. 리눅스에서 파일 이름을 변경하는 개념은 다른 운영 체제에서 하는 방식과 유사합니다.

이 튜토리얼에서는 리눅스에서 단일 및 여러 파일의 이름을 바꾸는 다양한 방법을 GUI 및 터미널에서 명령을 실행하여 배우게 됩니다.

시작해 봅시다!

필수 사항

이 튜토리얼을 따라하기 위해 다음 사항이 준비되어 있는지 확인하십시오:

  • 이 튜토리얼은 Ubuntu 18.04 LTS를 사용하지만 다른 리눅스 배포판도 작동합니다.
  • sudo/관리자 액세스 권한이 있는 계정.

파일 관리자를 사용하여 리눅스에서 파일 이름 변경하기

GUI를 통해 파일을 관리하는 데 익숙하다면 파일 관리자를 사용하여 파일 이름을 변경하는 튜토리얼을 시작해 보겠습니다. GUI 파일 관리자는 파일을 명확하게 볼 수 있어 편리합니다. 리눅스에서 사용할 수 있는 그 중 하나는 GNOME의 이전 파일 관리자인 Nautilus입니다. 이 튜토리얼에서는 Nautilus 파일 관리자를 사용하여 파일 이름을 변경하는 방법을 보여줍니다.

Linux의 다른 파일 관리자는 Konqueror, Dolphin, Krusader, Thunar, Nemo 파일 관리자, 그리고 Sunflower 파일 관리자입니다. 이러한 파일 관리자들은 동일한 작업을 수행하지만 파일 또는 디렉터리의 이름을 변경하는 방법이 약간 다를 수 있습니다.

터미널을 열고 아래 명령을 실행하여 아직 시스템에 설치되어 있지 않은 경우 apt 패키지 관리자를 사용하여 Nautilus를 설치하십시오. sudo 명령은 sudo/관리자 권한으로 명령을 실행합니다.

sudo apt install nautilus

단일 파일 이름 변경

Nautilus에서 단일 파일의 이름을 변경하는 것은 Windows 파일 탐색기와 비슷한 몇 번의 클릭만으로 가능합니다.

파일을 다시 이름 지정하려면 Nautilus를 열고 이름을 바꾸려는 파일에 마우스 오른쪽 버튼을 클릭한 다음 아래에 표시된대로 이름 바꾸기를 선택하십시오.

이 예제는 파일 이름을 바꾸는 데 중점을 두지만, 파일과 디렉터리 모두의 이름을 바꾸는 프로세스는 동일합니다.

Renaming a Single File

이제 새 파일 이름을 입력하여 원래 파일 이름을 대체하고 Enter 키를 누르거나 이름 바꾸기를 클릭하면 끝입니다.

Entering New File Name

Nautilus 파일 관리자를 사용하여 여러 파일의 이름 바꾸기

Windows와 마찬가지로 Ubuntu에서는 한 번에 여러 파일의 이름을 바꿀 수 있는 더 많은 옵션이 제공됩니다.

여러 파일의 이름을 바꾸려면 바꾸려는 모든 파일을 선택하고 그 중 하나를 마우스 오른쪽 버튼으로 클릭한 다음 이름 바꾸기를 선택하십시오. 팝업 창이 나타나면 선택한 파일을 어떻게 바꿀지 선택할 수 있습니다.

Renaming Multiple Files Using Nautilus.

아래에서는 선택한 파일을 어떻게 바꾸려는지에 따라 선택할 수 있는 두 가지 옵션이 있습니다.

  • 템플릿을 사용하여 이름 바꾸기 – 이를 통해 파일을 증분으로 이름을 바꿀 수 있습니다.
  • 텍스트 찾아 바꾸기 – 파일 이름에서 특정 텍스트를 찾아 바꿀 수 있습니다.

템플릿을 사용하여 파일 이름 바꾸기

템플릿을 사용하여 파일의 이름을 바꾸려면 템플릿을 사용하여 이름 바꾸기 옵션을 선택하십시오.

이제 빈 필드에 대체 이름을 입력하고 +추가 버튼을 클릭하고 템플릿을 선택하십시오. 이 튜토리얼에서는 첫 번째 템플릿 (1,2,3,4)을 선택하고 이름 바꾸기를 클릭하십시오. 이 옵션은 대체 파일 이름(Text1, Text2, …) 뒤에 증가하는 숫자를 추가합니다.

Renaming Files using a Template

알림: 파일 이름이 텍스트로 변경되었음을 주의하세요.

Verifying File Names Changed to “Text” with Incrementing Num

파일 이름에서 단어 찾아 바꾸기

특정 파일 이름으로 여러 파일의 이름을 변경하려면 텍스트 찾아 바꾸기 옵션을 선택하세요.

기존 텍스트 필드에 텍스트를 입력하고 바꿀 텍스트 필드에 대체할 텍스트를 입력한 다음 이름 바꾸기를 클릭하여 텍스트를 대체하세요. 이 옵션은 파일 이름에서 특정 텍스트를 찾아 바꿉니다.

Replacing Texts in File Names

이제 각 파일 이름에서 “텍스트”를 “파일”로 바꾼 것을 아래에서 확인할 수 있습니다.

Verifying the word “Text” was replaced with the word “File” on Each File

mv 명령을 사용하여 파일 이름 변경

GUI에서 탐색하는 대신 명령을 실행하는 것이 좋은 경우 파일을 터미널에서 어떻게 이름을 변경하는지 배우세요. 리눅스 터미널에서 파일 이름 변경은 PowerShell과 같은 다른 명령줄 환경에서 하는 것과 유사합니다. 명령을 실행하여 원래 파일 이름을 대상 파일 이름으로 바꿉니다.

파일 이름을 바꾸는 두 가지 시나리오가 있습니다. 첫 번째는 작업 디렉터리에서 파일의 이름을 변경하는 것이고, 두 번째는 전체 경로를 지정하는 것입니다. 파일을 이름을 바꾸려면 아래의 mv 명령 구문을 살펴보세요. 여기서 source는 원래 이름이고 destination은 대체 이름입니다.

# 작업 디렉터리에서 파일이나 디렉터리 이름 바꾸기
mv <source> <destination>
# 전체 경로를 지정하여 파일 이름 바꾸기
mv <~/mydir/source> <~/mydir/destination>

mv 명령을 사용하여 단일 파일 이름 바꾸기

mv 명령어 구문이 여전히 기억에 신선한 동안, 단일 파일 이름을 변경해 보겠습니다.

단일 파일 및 디렉터리 이름을 변경하는 방법을 보여드리겠습니다:

1. 터미널을 실행한 다음 아래 명령어 시리즈를 실행하여 디렉터리 및 두 개의 텍스트 파일을 생성합니다.

# 'test'라는 이름의 디렉터리 생성
mkdir test 
# ~/test로 디렉터리 변경
cd test 
# 'file1.txt' 및 'file2.txt'라는 이름의 텍스트 파일 생성
touch file1.txt file2.txt 

2. 이제 ls 명령어를 실행하여 작업 디렉터리 내의 파일 목록을 확인합니다. 아래에서 file1.txtfile2.txt~/test 디렉터리에 존재하는 것을 확인할 수 있습니다.

Listing Files in the Working Directory

3. 다음 중 하나의 mv 명령어를 실행하여 file1.txtfile10.txt으로 이름을 바꿉니다.

# 작업 디렉터리에서 파일 이름 변경
mv file1.txt file10.txt

# 전체 경로 지정하여 파일 이름 변경
mv ~/test/file1.txt ~/test/file10.txt

디렉터리 이름 변경은 파일 이름 변경과 동일합니다. 예: mv ~/test ~/demo. ~ 기호는 홈 디렉터리를 나타냅니다.

4. 마지막으로 ls 명령어를 다시 실행하여 작업 디렉터리의 파일 목록을 확인합니다.

아래에서 file1.txt가 이제 file10.txt으로 이름이 변경된 것을 확인할 수 있습니다.

Confirming file1.txt is renamed as file10.txt

For 루프를 사용하여 여러 파일 이름 변경

다른 작업에 너무 바쁘고 한 번에 모든 파일 이름을 변경하려면 아래와 같은 for 반복문을 사용해야 합니다.

아래 코드를 그대로 복사하여 터미널에 붙여넣고 Enter 키를 누르십시오. 아래 코드는 작업 디렉토리의 각 텍스트 파일을 스캔하고 “File” 다음에 증가하는 번호가 붙은 이름으로 파일의 이름을 변경합니다.

# 1로 설정된 값으로 변수 선언
i=1 
# 작업 디렉토리의 각 텍스트 파일을 스캔함
for file in *.txt; 
# 아래 명령을 모든 파일이 스캔될 때까지 반복 실행
do 
  # "File" 다음에 증가하는 번호($i)가 붙은 이름으로 각 파일의 이름을 변경함
	mv -- "$file" "File$i.txt"
  # 변수의 현재 숫자 값을 1 증가시킴
  i=$((i+1)) 
done

코드를 터미널에 붙여넣기만 해도 잘 작동하지만, 좋은 습관으로, 대신 실행할 스크립트 파일을 만드는 것이 더 좋습니다.

아래에서는 코드가 모든 파일의 이름을 변경하는 방법을 실제로 볼 수 있습니다.

Renaming Files with a For Loop

Linux에서 rename 유틸리티로 파일 이름 변경

만약 일상 생활에서 단일 파일의 이름을 바꾸려면, mv 명령어를 사용하면 됩니다. 그러나 한 번에 동일한 패턴을 가진 여러 파일의 이름을 변경하려고 합니까? 예를 들어, 특정 단어(file)로 시작하는 파일의 이름을 바꾸는 경우입니다. 그렇다면, 대신 rename 유틸리티를 설치하세요.

rename 유틸리티를 사용하면 여러 파일의 이름을 변경하고 파일 이름 형식을 변경하며 파일을 덮어쓸 수 있습니다.

rename 유틸리티를 설치하려면, 작업 중인 Linux 배포판에 따라 아래 명령 중 하나를 실행하십시오.

# Ubuntu, Debian 및 Linux Mint용 apt 패키지 관리자를 사용하여 rename 유틸리티 설치
sudo apt install rename
# CentOS, Fedora 및 Red Hat용 dnf 패키지 관리자를 사용하여 rename 유틸리티 설치
sudo dnf install prename
# Arch Linux / Manjaro Linux용 pacman 패키지 관리자를 사용하여 rename 유틸리티 설치
sudo pacman -S perl-rename

아래에 rename 명령어 구문을 볼 수 있습니다.

rename <options> <perlexpr> <files>

여러 파일의 이름 바꾸기

rename 명령어 구문을 이해하면 동일한 패턴을 가진 파일의 이름을 바꿀 수 있습니다. rename 명령어의 좋은 점은 “For Loop를 사용하여 여러 파일의 이름을 변경하는 방법” 섹션에서 한 것처럼 여러 파일의 이름을 변경하기 위해 루프 함수를 선언할 필요가 없다는 것입니다.

아마도 특정 단어가 포함된 파일 이름을 바꾸고 싶으실 것입니다. 그렇다면 아래 예시 명령어의 Perl 정규 표현식 ('s/file/myfile/')을 살펴보세요. Perl 정규 표현식은 Perl 프로그래밍 언어를 기반으로 문자열 패턴을 정의합니다.

다른 파일이 잘못된 이름으로 변경되지 않도록 하려면 아래와 같이 -n 옵션을 추가하여 변경 전에 모든 영향을 받는 파일을 나열하세요.

rename -n 's/file/myfile/' *.txt
Listing Affected Files Before Renaming

이제 작업 디렉토리나 ~/test/*.txt 디렉토리 내의 각 텍스트 파일 이름에서 단어 filemyfile로 바꾸기 위해 아래 rename 명령어 중 하나를 실행하세요.

Perl 표현식('s/file/myfile/')에서 s는 치환을 나타내며, 이는 파일 이름을 변경하는 것을 의미합니다. 명령어가 어떤 파일을 이름을 변경했는지를 반환하기 위해 -v 옵션이 추가되었음에 유의하세요.

# 작업 디렉토리 내 각 파일 이름에서 'file'을 'myfile'로 대체
rename -v 's/file/myfile/' *.txt
# ~/test 디렉토리 내 각 파일 이름에서 'file'을 'myfile'로 대체
rename -v 's/file/myfile/' ~/test/*.txt

아래에서 각 텍스트 파일의 “file” 단어가 “myfile”로 바뀐 것을 볼 수 있습니다.

Renaming a Files with the rename Command

모든 파일 이름을 바꾸려면 파일 경로를 지정할 때 파일 확장자를 제거하세요. 예를 들어, rename -v 's/file/myfile/' ~/test/*

파일 확장자 변경

rename 명령어는 파일 이름뿐만 아니라 파일 확장자도 변경합니다. 잘못된 파일 확장자를 가진 파일을 만들었을 수 있습니다. 그 경우 rename 명령어를 실행할 때 Perl 표현식으로 변경할 파일 확장자를 지정해야 합니다.

~/test 디렉토리에 있는 모든 파일의 확장자를 .txt에서 .html로 변경하려면 아래의 rename 명령어를 실행하십시오. Perl 표현식 내의 $ 기호는 문자열의 끝(.txt)을 각 파일 이름에 일치시키므로 명령어는 .txt 파일 확장자만 변경합니다. 여러 파일의 이름을 변경할 때와 마찬가지로 명령어가 수행한 각 변경 사항을 나열하려면 -v 옵션을 추가하십시오.

rename -v 's/.txt$/.html/' *.txt

대신에 모든 파일 확장자를 제거하려면 Perl 표현식 내의 대체 문자열을 제거하십시오. 다음과 같이: rename -v 's/.txt$//' *.txt

아래 이미지에서 볼 수 있듯이, .txt 확장자가 .html로 변경되었습니다.

Changing File Extensions from .txt to .html

파일 이름을 대문자 또는 소문자로 변경

잘못된 파일 확장자 대신에 파일 이름이 소문자로 되어 있거나 그 반대의 경우일 수 있습니다. 대문자로 특정 파일을 찾으려고 할 때 파일 이름이 소문자인지 모르는 경우도 있습니다.

리눅스는 대소문자를 구분하므로 각 파일 이름의 대소문자를 올바르게 설정해야 합니다. 대소문자는 기본적으로 소문자와 대문자 사이의 텍스트 구분입니다.

rename 명령어 중 하나를 실행하여 작업 디렉토리(*)의 모든 소문자 (a-z) 파일 이름을 대문자 (A-Z)로 또는 그 반대로 변경하세요.

# 파일 이름을 소문자에서 대문자로 변경
rename -v 'y/a-z/A-Z/' *
# 파일 이름을 대문자에서 소문자로 변경
rename -v 'y/A-Z/a-z/' *

아래에서 파일 이름의 대소문자를 변경한 결과를 확인할 수 있습니다.

Changing File Name from Lowercase to Uppercase and Vice Versa

파일 이름에서 공백 치환 및 제거

파일 이름의 대소문자와 마찬가지로 파일 이름에 공백이 있을 경우 파일을 찾는 데 문제가 발생할 수 있습니다. 이를 해결하기 위해 공백을 문자로 대체하거나 공백을 완전히 제거하세요.

작업 디렉토리의 모든 파일 이름에서 공백을 밑줄(_)로 대체하려면 아래의 rename 명령어를 실행하세요. 밑줄은 메타문자이므로 백슬래시(\\_)로 이스케이프하여 밑줄을 문자 그대로 나타냅니다. 메타문자는 컴퓨터 프로그램에서 특수한 의미를 가진 특수 문자입니다.

알림: g을 Perl 식에서 사용하면 명령이 모든 일치 항목 (공백)을 바꾸도록 지시하며 첫 번째 항목만이 아닙니다.

rename -v 's/ /\\_/g' *

아래에서는 명령이 모든 공백을 언더스코어로 대체한 것을 볼 수 있습니다.

Replacing spaces with underscores in a file name

파일 이름의 모든 공백을 제거하려면 아래 명령을 실행하세요.

아래 Perl 식에서는 공백(/ *) 다음의 별표가 파일 이름의 모든 공백이 아닌 모든 공백과 일치하고 대체 문자가 비어 있으므로 rename 명령이 모든(g) 공백을 제거합니다.

rename -v "s/ *//g" *

이제 아래에서 각 파일 이름에서 모든 공백이 제거된 것을 볼 수 있습니다.

Removing all spaces in filenames

파일 이름의 각 단어의 첫 글자 대문자화

대신 파일 이름의 각 단어의 첫 글자를 대문자로 유지하려면 더 복잡한 Perl 식이 필요합니다. 아래 샘플 명령을 살펴보세요.

아래 Perl 식에서는 단어 경계(\\b)에서 문자(\\w)를 제외한 문자가 아닌 경우(?<![.'\\''])에 해당 문자를 대문자로 변환합니다(u$&).

rename -v 's/(?<![.'\\''])\\b\\w*/\\u$&/g' *

아래에서는 파일 이름의 각 단어가 대문자로 시작하면서 파일 확장자는 그대로인 것을 볼 수 있습니다.

Capitalizing First Letter of Each Word in File Names

결론

다이 tutorial에서는 GUI와 명령 줄 터미널을 통한 Linux 파일 이름 바꾸기의 여러 방법을 배웠습니다. 여러 파일에 대한 이름을 조작하는 방법에 대한 견고한 이해력을 얻었습니다.

왜 Linux 셸 스크립팅을 배우지 않고 Linux에서 파일 이름을 자동으로 변경하는 스크립트를 만들지 않으세요?

Source:
https://adamtheautomator.com/rename-files-in-linux/