리눅스 명령어 mv 사용법 및 4가지 옵션

리눅스에서 파일 및 디렉터리를 이동하거나 이름을 변경할 때 사용하는 대표적인 명령어가 mv입니다. 이 포스팅에서는 리눅스 명령어 mv의 기본 사용법부터 다양한 옵션과 활용 예제까지 자세히 살펴보겠습니다.

리눅스 명령어 mv란?

mv는 “move”의 줄임말로, 다음과 같은 상황에서 사용하기에 적합합니다.

  • 파일 및 디렉터리 이동: 파일이나 디렉터리를 다른 위치로 이동할 때 사용합니다.
  • 파일 및 디렉터리 이름 변경: 파일이나 디렉터리의 이름을 변경할 때 사용합니다.

기본 사용법

리눅스 명령어 mv의 기본 사용법은 다음과 같습니다.

mv [옵션] 원본파일 대상파일
ShellScript

파일 이름 변경/디렉터리 이름 변경

예를 들어, file1.txtfile2.txt로 이름을 변경하려면 아래 코드의 라인 1과 같이 첫번째 파라미터에 이름을 변경하려는 파일을 입력해 주고, 두번째 파라미터에 바뀔 파일 이름을 작성해 줍니다. 라인 2와 같이 디렉터리 이름을 변경하는 것도 가능합니다.

mv file1.txt file2.txt
mv dir1 dir2
ShellScript

아래의 그림은 a.txt 파일을 b.txt 파일로 이름을 변경한 경우입니다.

그림 1. 리눅스 명령어 mv: 파일 이름 변경
그림 1. 리눅스 명령어 mv: 파일 이름 변경

파일 이동

파일을 이동할 때는 다음과 같이 첫째 파라미터에 이동하고자 하는 파일을 입력해 주고, 둘째 파라미터에는 이동하고자 하는 경로를 입력해 줍니다. 아래의 경우에는 현재 디렉터리의 file1.txt 파일을 /home/ito/Documents/ 경로로 이동하게 됩니다.

mv file1.txt /home/ito/Documents/
ShellScript

디렉터리를 이동하는 경우에는 디렉터리 내의 모든 파일도 함께 이동하게 됩니다. 따라서 mv 명령어 사용시에는 cp 명령과 같이 -r(recursive) 옵션을 이용할 필요가 없습니다.

그림 2. 리눅스 명령어 mv 디렉터리 이동
그림 2. 리눅스 명령어 mv 디렉터리 이동

유용한 옵션들

mv 명령어에는 여러가지 옵션이 있습니다. mv 명령어에서 사용하는 옵션은 cp 명령어에서 사용하는 옵션과 같은 기능을 하는 경우가 많습니다. 여기서는 자주 사용되는 몇 가지 옵션을 소개합니다.

-i 옵션(interactive): 덮어쓰기 경고

기본적으로 mv 명령어는 대상 파일이 이미 존재하면 아무 경고 없이 덮어씁니다. 중요한 파일을 실수로 덮어쓰는 것을 방지하기 위해 -i(interactive) 옵션을 사용하여 확인 메시지를 표시할 수 있습니다.

mv -i file1.txt file2.txt
ShellScript

대상 파일이 없다면 아무 메시지 없이 mv 명령어 실행이 완료되지만, 대상 파일이 있을 땐에는 이 옵션을 사용하면 파일을 덮어쓰기 전에 “overwrite ‘파일명’?”라는 메시지가 아래 그림과 같이 나타납니다.

그림 3. 리눅스 명령어 mv -i 옵션 사용 예시
그림 3. 리눅스 명령어 mv -i 옵션 사용 예시

-n 옵션(no clobber): 덮어쓰기 금지

대상 파일이 이미 존재하는 경우에 파일을 덮어쓰지 못하게 하려면 -n 옵션을 이용하면 됩니다.

mv -n file1.txt file2.txt
ShellScript

다음은 b.txt를 a.txt로 이동하려 했지만, -n 옵션과 함께 사용해서 a.txt 파일을 교체하지 못했음을 알 수 있습니다.

그림 4. 리눅스 명령어 mv -n 옵션 사용 예시
그림 4. 리눅스 명령어 mv -n 옵션 사용 예시

-v 옵션(verbose): 상세 내용 출력

-v 옵션을 사용하면 이동 과정의 상세 내용을 확인할 수 있습니다. 이를 통해 이동 과정에서 발생하는 문제를 쉽게 확인할 수 있습니다.

mv -v file1.txt file2.txt
ShellScript

아래 그림은 m으로 시작하는 모든 파일을 test 디렉터리 하위로 옮긴 결과를 보여주고 있습니다.

그림 5. 리눅스 명령어 mv -v 옵션 사용 예시
그림 5. 리눅스 명령어 mv -v 옵션 사용 예시

-u 옵션(update): 최신 파일만 이동

-u 옵션은 대상 파일이 원본 파일보다 오래된 경우에만 이동합니다. 이를 통해 불필요한 파일 이동을 줄일 수 있습니다.

mv -u file1.txt file2.txt
ShellScript

아래 그림에서 m1.txt는 가장 오래된 파일이고, m2.txt는 그 다음, m3.txt가 가장 최신의 파일인 것을 알 수 있습니다. -u 옵션을 사용했으므로 m1.txt를 m2.txt로 옮기지 못했으며, m3.txt를 m2.txt로 변경하는 것에는 성공한 것을 확인할 수 있습니다.

아래와 같이 -u 옵션을 -v 옵션과 함께 사용하면, 파일 옮기기가 성공적으로 실행된 경우에만 상세 출력을 해 주는 것을 알 수 있습니다.

그림 6. 리눅스 명령어 mv -u 옵션 사용 예시
그림 6. 리눅스 명령어 mv -u 옵션 사용 예시

주의사항

파일 이름의 공백

파일 이름을 특정해서 이동하거나 이름을 변경할 때 특수문자나 스페이스(공백)가 들어가 있다면 따옴표로 묶어서 사용하기 바랍니다. 그렇지 않은 경우 예상하지 않은 결과가 나타날 수 있습니다.

mv "My File.txt" "New File.txt"
ShellScript

아래의 예시는 공백이 있는 파일이름을 따옴표로 묶지 않은 경우입니다. 아래와 같이 따옴표로 묶어주지 않은 명령어는 첫째 파라미터 My 파일과, 둘째 파라미터 File.txt 파일과, 셋째 파라미터 New 파일, 이렇게 총 3개의 파일을 File.txt 라는 디렉터리로 옮기라는 명령어가 됩니다.

이처럼 전혀 다른 의미로 작동할 수 있으므로 파일명에 공백이 있을 때에는 파일명을 따옴표로 묶어 주는 것 잊지 마시기 바랍니다.

그림 7. 리눅스 명령어 mv: 공백이 포함된 파일명 잘못 입력한 예
그림 7. 리눅스 명령어 mv: 공백이 포함된 파일명 잘못 입력한 예

파일 퍼미션 문제

간혹 파일에 대한 권한이 없는데, 이동하거나 이름을 변경해야 하는 경우가 있습니다. 그런 경우에는 sudo 명령어를 이용해서 실행하시기 바랍니다.

sudo mv file1.txt /root/
ShellScript

다중 옵션

여러 옵션을 동시에 적용해야 할 때는 붙여 쓰면 보다 편리합니다. 예를 들어, -i 옵션과 -v 옵션을 함께 사용할 때는 다음과 같이 사용할 수 있습니다:

mv -iv file*.txt ~/Documents/
ShellScript

유용한 활용 방법

  • 백업 파일 관리: 작업 중인 파일을 백업할 때 mv 명령어를 사용하여 백업 폴더로 이동할 수 있습니다.
  • 로그 파일 정리: 로그 파일을 주기적으로 정리하고 다른 위치로 이동할 때 유용합니다.
  • 파일 정리 자동화: 크론탭(crontab)과 같은 도구와 함께 사용하여 파일 정리 작업을 자동화할 수 있습니다.

정리

리눅스 명령어 mv는 파일과 디렉터리를 이동하거나 이름을 변경하는 데 필수적인 도구입니다. 기본 사용법부터 다양한 옵션을 통해 유용하게 사용할 수 있으며, 다른 도구와 조합하여 효율적인 작업 환경을 구축할 수 있습니다. 추가로 궁금한 사항이나 더 알고 싶은 내용이 있다면 언제든지 질문해 주세요!

이 글이 여러분의 리눅스 활용에 도움이 되길 바랍니다!

Reference

관련 포스트

Leave a Comment