[Linux] 리눅스 mv 명령어 사용법 및 mv 명령어 옵션

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8root 계정2026-10-13 확인
파일 관리 명령어mv위치/usr/bin/mv

리눅스 mv 명령어는 move의 약자로 파일과 디렉토리를 다른 위치로 이동하거나 이름을 변경하는 명령어입니다. AlmaLinux 9.8에서 옵션마다 직접 실행해 출력 문구를 확인한 결과, 덮어쓰기를 막는 -i, -n, -b 옵션과 이동이 거부될 때의 오류 메시지까지 정리하게 되었습니다.

✅ 기본 사용 방법

기본 사용법은 아래와 같습니다.

mv -옵션 원본 대상

대상이 이미 있는 디렉토리면 원본이 그 안으로 이동하고, 없는 이름이면 원본의 이름이 그 이름으로 변경됩니다.

# 파일 이름 변경
mv report.txt report-2026.txt
# 디렉토리 안으로 이동
mv a.txt dir1/
# 여러 파일을 한 디렉토리로 이동
mv c.txt d.txt dir2/
# 대상 디렉토리를 앞에 지정
mv -t dir2/ c.txt d.txt

-t 옵션은 대상 디렉토리를 맨 앞에 두므로, find나 xargs처럼 파일 목록을 뒤에 이어 붙이는 명령과 함께 사용하기에 적합합니다.

같은 파일 시스템 안에서 mv는 데이터를 복사하지 않고 이름과 위치 정보만 변경하므로, 300MB 파일을 옮기는 데 0.002초가 걸렸고 inode 번호도 그대로였습니다.

같은 파일 시스템 안의 mv는 짐을 옮기는 이사가 아니라, 문패만 바꿔 다는 일입니다.

ls -i big.img
140519014 big.img
mv big.img big2.img

mv 명령은 출력 없이 끝나며, 바뀐 이름으로 inode 번호를 다시 조회합니다.

ls -i big2.img
140519014 big2.img

다른 파일 시스템(디스크나 파티션)으로 옮길 때는 복사한 뒤 원본을 삭제하므로, 시간이 파일 크기에 비례해 늘어나고 inode 번호도 새로 바뀝니다.

✅ 덮어쓰기 확인: -i, -n, -b 옵션

AlmaLinux 9.8의 root 계정은 [/root/.bashrc]의 [alias mv=’mv -i’] 별칭 때문에, mv만 입력해도 실제로는 mv -i가 실행됩니다. 그래서 root 계정에서는 덮어쓰기 전에 확인을 묻게 됩니다.

mv a.txt dir1/
mv: overwrite 'dir1/a.txt'? n
alias mv
alias mv='mv -i'

일반 사용자 계정에는 이 별칭이 없어, 같은 이름의 파일이 있으면 묻지 않고 덮어쓰게 됩니다. cp와 rm 명령어도 root 계정에서 같은 -i 별칭으로 실행됩니다.

-n 옵션은 같은 이름의 파일이 있으면 아무 메시지 없이 건너뛰며, -b 옵션은 덮어쓰기 전에 기존 파일 이름 끝에 [~]를 붙여 백업으로 보관합니다. 백업 이름 끝을 바꾸려면 [-⁠-suffix] 옵션을 함께 사용합니다.

mv -b -v b.txt dir1/a.txt
mv: overwrite 'dir1/a.txt'? y
renamed 'b.txt' -> 'dir1/a.txt' (backup: 'dir1/a.txt~')
mv -b -v --suffix=.old z.txt dir2/u.txt
mv: overwrite 'dir2/u.txt'? y
renamed 'z.txt' -> 'dir2/u.txt' (backup: 'dir2/u.txt.old')

확인 없이 바로 덮어쓰려면 -f 옵션을 붙이거나, 명령어 앞에 역슬래시[\]를 붙여 별칭을 거치지 않게 합니다. -u 옵션은 대상 파일이 없거나 원본이 더 새 파일일 때만 이동합니다.

mv -f a.txt dir1/
\mv a.txt dir1/

두 명령 모두 [dir1/a.txt]를 확인 없이 덮어쓰게 되며, 역슬래시는 그 명령 한 번만 별칭을 거치지 않습니다.

✅ 리눅스 mv 명령어 옵션 & 시뮬레이터

옵션설명
-i--interactive덮어쓰기 전에 사용자에게 확인 요청alias mv='mv -i'
-f--force덮어쓰기 전에 확인하지 않음
-n--no-clobber같은 이름의 파일이 있으면 덮어쓰지 않고 건너뜀
-b--backup덮어쓰기 전에 기존 파일을 백업 (이름 끝에 ~)
-S--suffix=SUFFIX백업 파일 이름 끝에 붙일 글자 지정 (-b 포함)
-u--update대상 파일이 없거나 원본이 더 새 파일일 때만 이동
-t--target-directory=DIR대상 디렉토리를 먼저 지정하고 뒤에 원본을 나열
-v--verbose이동하거나 이름을 바꾼 파일을 한 줄씩 출력
mv 명령어 시뮬레이터alias mv='mv -i'
[root@server work]#
브라우저 안에서만 동작하며 실제 파일은 건드리지 않습니다. mv 옵션을 바꿔 가며 입력하고 ls, cat으로 결과를 확인해 보세요. 옮긴 파일은 [처음부터]를 누르면 돌아옵니다. 키보드 ↑↓ 로 앞에서 쓴 명령을 다시 불러오고, uknew help 를 입력하면 쓸 수 있는 명령이 나옵니다.

✅ mv 명령어 오류 메시지 3가지

덮어쓰기 옵션을 맞게 붙여도 mv가 이동을 거부하는 경우가 있습니다. root 계정에서는 -i 별칭 때문에 덮어쓰기 확인에 y를 입력한 뒤에 오류가 나옵니다.

mv logs archive/
mv: overwrite 'archive/logs'? y
mv: cannot move 'logs' to 'archive/logs': File exists
mv edir e.txt
mv: overwrite 'e.txt'? y
mv: cannot overwrite non-directory 'e.txt' with directory 'edir'
mv nofile dir2/
mv: cannot stat 'nofile': No such file or directory

[File exists]는 옮길 자리에 같은 이름의 디렉토리가 있고 그 안이 비어 있지 않을 때 나옵니다. mv는 두 디렉토리를 합치지 않으므로, 안의 파일을 따로 이동하거나 rsync 명령어로 병합합니다.

[cannot overwrite non-directory]는 디렉토리를 같은 이름의 파일 자리로 옮길 때 나옵니다. 반대로 파일을 같은 이름의 디렉토리 자리로 옮기면 [cannot overwrite directory]가 나옵니다.

[cannot stat]은 원본 이름이 틀렸을 때 나오며, 대소문자와 경로를 ls 명령어로 다시 확인합니다.

🔢 FAQ & 추천 콘텐츠

필요하지 않습니다. mv는 디렉토리도 옵션 없이 안의 파일과 함께 옮기며, [mv -r d1 d2]처럼 -r을 붙이면 [invalid option -- 'r'] 오류로 실행되지 않습니다.

mv는 원본 하나를 이름 하나로 바꾸므로, 여러 파일은 rename 명령어를 사용합니다. AlmaLinux 9.8의 rename은 util-linux 2.37.4에 포함된 명령어입니다. [rename .txt .bak *.txt]를 실행한 결과 a.txt, b.txt, c.txt가 모두 .bak 파일로 변경되었습니다.

옮겨지지 않습니다. 셸의 [*]는 점(.)으로 시작하는 숨김 파일을 포함하지 않아, [mv src/* dst/] 뒤에도 [src/.hidden]이 남았습니다. 숨김 파일까지 옮기려면 디렉토리째 mv로 옮깁니다.

🧭 파일 관리 추천 콘텐츠 글 8 · 참조 1
🗂️ 파일 관리
📄 mv 명령어 📄 touch 명령어 📄 심볼릭 링크 · 하드 링크 📄 file 명령어 📄 stat 명령어
📄 cd 명령어 📄 mkdir 명령어 📄 tree 명령어
📡 GNU Coreutils mv invocation

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 10   +   7   =