Linux 파일 및 디렉토리 이동 명령어 mv 활용법

mv 명령어는 리눅스에서 파일이나 디렉토리의 위치를 변경하거나 이름을 바꿀 때 사용하는 핵심 도구입니다. 세 가지 주요 사용 형태를 지원합니다.

기본 구문

mv [옵션] … [-T] 원본파일 대상파일
mv [옵션] … 원본파일 … 대상
mv [옵션] … -t 대상 원본파일 …

첫 번째 형태는 파일명 변경, 두 번째와 세 번째는 파일 이동에 활용됩니다.

주요 옵션

옵션설명
-b덮어기 전 백업 파일 생성
-f, --force확인 없이 강제로 덮어쓰기
-i, --interactive덮어쓰기 전 사용자 확인
-n, --no-clobber기존 파일 보호 (덮어쓰기 방지)
-u, --update원본이 더 최신일 때만 이동

주의: -f, -i, -n 옵션을 중복 지정하면 마지막에 지정한 옵션만 적용됩니다.

실전 예제

1. 파일명 변경

대상이 디렉토리가 아닐 경우 이름 변경으로 처리됩니다.

$ touch data.log
$ mv data.log archive.log
$ ls
archive.log

2. 확장자 일괄 추가

중괄호 확장을 활용한 효율적인 파일명 변경:

$ touch report
$ mv report{,.md}
$ ls
report.md

# 여러 파일 동시 처리
$ touch note memo
$ for f in note memo; do mv "$f" "${f}.txt"; done

3. 디렉토리 간 파일 이동

# 작업 디렉토리 설정
$ mkdir -p /tmp/source /tmp/target
$ touch /tmp/source/file{1..3}.dat

# 기본 이동 (와일드카드 활용)
$ mv /tmp/source/*.dat /tmp/target/

# -t 옵션으로 대상 먼저 지정
$ mv -t /tmp/source /tmp/target/*.dat

4. 디렉토리명 변경 vs 디렉토리 내부로 이동

mv의 동작은 대상의 존재 여부에 따라 달라집니다:

$ mkdir folderA folderB

# 대상이 없으면 이름 변경
$ mv folderA folderC    # folderA → folderC 로 이름 변경

# 대상이 존재하는 디렉토리면 내부로 이동
$ mv folderC folderB    # folderC를 folderB 내부로 이동

5. 백업 옵션 활용

-b 옵션 사용 시 물결표(~)가 붙은 백업이 생성됩니다:

$ echo "original content" > config.ini
$ echo "new settings" > config.tmp

$ mv -b config.tmp config.ini
$ cat config.ini
new settings
$ cat config.ini~
original content

백업 정책 상세 설정

VERSION_CONTROL 환경변수 또는 --backup 옵션으로 세밀한 제어가 가능합니다:

CONTROL 값동작
none / off백업 생성 안 함
numbered / t번호 순차 부여 (file.~1~, file.~2~)
existing / nil기존 번호 백업 있으면 계속, 없으면 simple 방식
simple / never단일 백업만 유지 (반복 시 교체)
# 번호 백업 예시
$ export VERSION_CONTROL=numbered
$ mv -b important.doc updated.doc
$ ls important.doc*
important.doc.~1~  important.doc.~2~  updated.doc

안전한 파일 작업 팁

  • 중요 파일 작업 전 -i 옵션으로 확인 절차 추가
  • 스크립트에서는 -n 또는 -u로 의도치 않은 데이터 손실 방지
  • 대량 이동 작업 전 ls로 대상 경로 미리 확인

태그: linux Shell command-line file-management bash

7월 9일 20:39에 게시됨