리눅스 / 파일 또는 디렉토리 이름 바꾸는 방법
리눅스에서 파일이나 디렉터리의 이름을 바꾸려면 mv 명령에 기존 경로와 새 경로를 차례로 지정합니다. 대상 이름이 이미 존재하면 덮어쓰거나 예상과 다른 위치로 이동할 수 있으므로 실행 전에 확인해야 합니다.
이름 변경의 기본 형식
mv 명령으로 파일 이동하기에서 쓰는 mv는 이름 변경에도 사용합니다. 두 경로가 같은 디렉터리에 있으면 이름이 바뀌고, 서로 다른 디렉터리에 있으면 위치도 함께 바뀝니다.
mv -i -- source destination
-i는 기존 대상 파일을 덮어쓰기 전에 확인합니다. --는 옵션의 끝을 나타내므로 이름이 하이픈으로 시작해도 옵션으로 해석하지 않습니다. 아래 예제는 GNU coreutils의 mv와 Bash 셸을 기준으로 합니다.
실습용 파일과 디렉터리 준비하기
기존 데이터를 건드리지 않도록 임시 디렉터리에서 연습합니다. 아래 명령을 같은 셸에서 순서대로 실행하세요. workdir 변수에는 새로 만든 임시 디렉터리의 경로가 저장됩니다.
workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"
출력에 report.txt와 docs가 있으면 준비가 된 것입니다. 경로를 확인하려면 printf '%s\n' "$workdir"을 실행합니다. 명령은 현재 셸의 변수를 사용하므로 새 터미널을 열었다면 다시 준비해야 합니다.
파일 이름 바꾸기
실습 파일의 이름을 report.txt에서 summary.txt로 바꾸고 결과를 확인합니다. 새 대상이 이미 있는지 확인한 다음 실행하세요.
ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"
성공하면 목록에는 report.txt 대신 summary.txt가 나타나고, 마지막 명령은 example을 출력합니다. 같은 파일 시스템 안에서 이름만 바꾸는 경우 내용은 그대로입니다. 원래 이름으로 되돌리려면 기존 이름이 사용 중이 아닌지 확인한 뒤 두 경로를 바꾸어 mv -i를 실행합니다.
디렉터리 이름 바꾸기
디렉터리도 같은 방식으로 이름을 바꿉니다. 다음 명령은 대상이 존재하지 않는 실습 환경에서 docs를 archive로 바꿉니다.
mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"
성공하면 docs 대신 archive가 표시됩니다. -T는 GNU mv에서 마지막 경로를 대상 디렉터리로 특별 취급하지 않는 옵션입니다. 이 옵션 없이 이미 존재하는 디렉터리를 대상으로 지정하면 이름을 바꾸는 대신 그 안으로 이동할 수 있습니다. -T를 써도 기존 대상의 종류와 상태에 따라 교체되거나 오류가 날 수 있으므로 먼저 확인하세요. 비어 있지 않은 대상 디렉터리는 교체할 수 없습니다.
덮어쓰기와 경로 확인하기
기존 파일을 대상으로 지정하면 파일이 덮어써질 수 있습니다. 중요한 파일은 먼저 백업하고, -i의 확인 질문에 덮어쓸 때만 y로 답하세요. 덮어쓰지 않으려면 n을 입력합니다. 확인 문구는 시스템과 언어 설정에 따라 다릅니다.
파일명에 공백이 있으면 경로 전체를 큰따옴표로 감쌉니다. 다음은 별도의 실습 파일을 만든 뒤 이름을 바꾸는 예입니다.
printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"
마지막에 notes가 출력되면 새 이름으로 파일을 읽은 것입니다. 실제 작업에서 경로를 잘못 지정했거나 권한이 없다면 오류 메시지와 원본·대상 디렉터리의 쓰기 권한을 확인하세요. 다른 파일 시스템으로 이동할 때는 복사 후 원본 삭제가 일어날 수 있으므로 공간과 결과를 확인해야 합니다. 옵션과 동작에 관한 자세한 내용은 GNU coreutils의 mv 설명서를 참고하세요.




