[Linux] 리눅스 mv 명령어 사용법 및 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.img140519014 big.imgmv big.img big2.imgmv 명령은 출력 없이 끝나며, 바뀐 이름으로 inode 번호를 다시 조회합니다.
ls -i big2.img140519014 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'? nalias mvalias mv='mv -i'일반 사용자 계정에는 이 별칭이 없어, 같은 이름의 파일이 있으면 묻지 않고 덮어쓰게 됩니다. cp와 rm 명령어도 root 계정에서 같은 -i 별칭으로 실행됩니다.
-n 옵션은 같은 이름의 파일이 있으면 아무 메시지 없이 건너뛰며, -b 옵션은 덮어쓰기 전에 기존 파일 이름 끝에 [~]를 붙여 백업으로 보관합니다. 백업 이름 끝을 바꾸려면 [--suffix] 옵션을 함께 사용합니다.
mv -b -v b.txt dir1/a.txtmv: overwrite 'dir1/a.txt'? y
renamed 'b.txt' -> 'dir1/a.txt' (backup: 'dir1/a.txt~')mv -b -v --suffix=.old z.txt dir2/u.txtmv: 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 명령어 오류 메시지 3가지
덮어쓰기 옵션을 맞게 붙여도 mv가 이동을 거부하는 경우가 있습니다. root 계정에서는 -i 별칭 때문에 덮어쓰기 확인에 y를 입력한 뒤에 오류가 나옵니다.
mv logs archive/mv: overwrite 'archive/logs'? y
mv: cannot move 'logs' to 'archive/logs': File existsmv edir e.txtmv: 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 & 추천 콘텐츠








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