Linux / 명령어 / mv - 파일 이동과 이름 변경
mv는 파일과 디렉터리를 다른 위치로 이동하거나 이름을 바꾸는 명령입니다. 같은 파일 시스템에서는 대개 디렉터리 항목을 바꾸는 빠른 이름 변경으로 처리되지만, 다른 파일 시스템으로 이동할 때는 복사 후 원본 삭제와 비슷하게 동작합니다.
이 글에서는 기본 문법, 여러 항목 이동, 덮어쓰기 제어, 대상 경로의 모호함을 줄이는 옵션과 대용량 이동 시 주의점을 설명합니다.
mv 명령어란?
mv는 원본 경로를 대상 경로로 이동합니다. 두 인수를 지정했을 때 대상이 기존 디렉터리이면 그 안으로 이동하고, 그렇지 않으면 대상 이름으로 변경합니다. 파일 시스템 경계를 넘으면 GNU mv는 복사에 성공한 뒤 원본을 제거하는 방식으로 처리할 수 있으므로 작업 시간이 길어지고 부분 성공 가능성도 생깁니다.
기본 문법
mv [옵션] 원본 대상 mv [옵션] 원본 ... 디렉터리 mv [옵션] -t 디렉터리 원본 ...
파일명이나 경로에 공백이 있으면 따옴표로 감싸고, 하이픈으로 시작하는 이름은 가능한 경우 -- 뒤에 지정합니다. 지원 옵션은 배포판과 GNU Coreutils 버전에 따라 다를 수 있으므로 mv --help와 man mv으로 현재 시스템의 설명을 확인하세요.
mv 기본 사용법
파일 이름 변경하기
같은 디렉터리 안에서 새 이름을 지정합니다.
mv draft.txt final.txt
파일을 다른 디렉터리로 이동하기
대상이 기존 디렉터리이면 원래 이름을 유지한 채 그 안으로 이동합니다.
mv report.pdf archive/
여러 파일을 한 번에 이동하기
원본이 여러 개이면 마지막 인수는 대상 디렉터리여야 합니다.
mv *.log old-logs/ mv -t old-logs app.log access.log error.log
이동·이름 변경 결과 확인하기
mv가 성공하면 일반적으로 출력이 없습니다. 이름을 바꾼 뒤 원래 경로가 사라지고 새 경로가 생겼는지 확인할 수 있습니다.
printf 'demo\n' > before.txt mv before.txt after.txt test -f after.txt && test ! -e before.txt echo $?
예시 출력 0은 두 조건이 모두 참이라는 뜻입니다. 다른 파일시스템으로 옮길 때는 내부적으로 복사와 삭제가 일어날 수 있으므로 대용량 작업은 결과 파일의 크기·내용도 검증하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-i |
기존 대상을 덮어쓰기 전에 확인합니다. |
-n, --no-clobber |
기존 대상을 덮어쓰지 않습니다. |
-f, --force |
확인 없이 덮어쓰기를 시도합니다. |
-u, --update |
대상이 없거나 원본이 더 새로운 경우 등 조건에 따라 이동합니다. |
-v |
처리하는 경로를 출력합니다. |
-b, --backup |
덮어쓸 대상 파일의 백업본을 만듭니다. |
-T, --no-target-directory |
대상을 디렉터리가 아니라 정확한 경로로 취급합니다. |
-t DIR |
대상 디렉터리를 옵션으로 지정합니다. |
긴 옵션은 의미를 파악하기 쉽고 스크립트 검토에도 도움이 됩니다. 다만 이식성이 중요한 스크립트에서는 대상 시스템이 해당 GNU 확장 옵션을 지원하는지 먼저 확인하세요.
실전 활용 예제
덮어쓰기 전에 확인하거나 백업하기
수동 작업은 -i, 자동화에서 덮어쓰기 자체를 피하려면 -n이 유용합니다. 기존 대상의 백업본이 필요하면 -b를 검토하세요.
mv -iv new.conf /etc/myapp/config.conf mv -bv new.conf /etc/myapp/config.conf
대상 경로를 명확히 지정하기
대상 이름과 같은 디렉터리가 우연히 존재하면 의도와 다른 위치로 들어갈 수 있습니다. 하나의 정확한 대상 경로로 바꾸려면 -T가 모호함을 줄여 줍니다.
mv -T staging current mv -t archive -- file1 file2
파일 시스템 간 이동 확인하기
다른 마운트 지점으로 큰 파일을 이동하면 즉시 끝나는 이름 변경이 아니라 실제 데이터 복사와 원본 제거가 발생할 수 있습니다. 여유 공간과 중단 가능성을 확인하고 중요한 데이터는 검증 후 원본을 정리하는 절차를 고려하세요.
df -h source-dir destination-dir mv -v large-image.raw /mnt/archive/
mv와 관련 명령 비교
| 명령·방법 | 주요 역할 | 적합한 상황 |
|---|---|---|
mv |
이동 또는 이름 변경 | 원본 경로를 없애고 대상 경로로 옮길 때 |
cp |
독립된 복사본 생성 | 원본과 사본을 모두 유지할 때 |
rename |
규칙에 따른 여러 이름 변경 | 배포판별 도구 문법을 확인하고 일괄 변경할 때 |
rsync --remove-source-files |
검증 가능한 전송 후 원본 파일 정리 | 대규모·원격 이동을 세밀하게 제어할 때 |
사용할 때 주의할 점
이동은 휴지통으로 보내는 작업이 아니다
잘못된 덮어쓰기가 발생하면 이전 대상 파일을 쉽게 복원할 수 없습니다. 중요한 경로에서는 -i, -n 또는 백업을 사용하세요.
파일 시스템 간 이동은 부분 성공할 수 있다
여러 항목을 옮기다 중간에 공간 부족이나 권한 오류가 나면 일부는 대상에 있고 나머지는 원본에 남을 수 있습니다. 항목별 결과를 확인해야 합니다.
디렉터리 심볼릭 링크 뒤의 슬래시를 피한다
원본이 디렉터리를 가리키는 심볼릭 링크일 수 있을 때 뒤에 슬래시를 붙이면 시스템별로 예상치 못한 동작이 생길 수 있습니다. 링크 자체를 이동하려면 경로를 명확히 지정하세요.
FAQ
mv는 같은 파일 시스템에서 데이터를 다시 복사하나요?
일반적으로 같은 파일 시스템에서는 이름 변경으로 처리되어 빠릅니다. 다른 파일 시스템으로 이동하면 복사 후 원본 제거 방식이 될 수 있습니다.
기존 대상 파일을 덮어쓰지 않으려면 어떻게 하나요?
mv -n 원본 대상을 사용합니다. 대화형 확인이 필요하면 -i를 사용하세요.
파일 이름 변경과 이동은 문법이 다른가요?
둘 다 mv 원본 대상 형식입니다. 대상이 기존 디렉터리인지 새 경로인지에 따라 결과가 달라집니다.
여러 파일을 안전하게 한 디렉터리로 옮기려면 어떻게 하나요?
mv -t 대상디렉터리 -- 파일...처럼 대상 디렉터리를 명시하면 인수 구성이 분명해집니다.









