리눅스 명령어 – mv
리눅스에서 파일 처리를 할 때 가장 많이 쓰이는 명령어 중에 하나인 mv
를 알아보겠습니다. 예상하셨겠지만 mv
는 이동(move)의 약자이고, 말 그대로 파일이나 디렉토리의 위치를 지정한 곳으로 이동시켜주는 역할을 합니다.
이 뿐만이 아니라 mv
는 위치에 상관없이 파일이나 디렉토리의 기존 이름을 다른 이름으로 변경해줍니다. 이름 변경을 할 수 있는 다른 명령어로는 rename
이 있으나 몇몇 리눅스 배포판에는 rename
을 별도로 설치해야 하기 때문에 mv
명령어에 익숙해지는 것이 가장 좋습니다.
사용 방법
mv
명령어의 사용법은 아주 간단합니다. mv
에는 두개 이상의 인자값이 필요합니다. 각각의 인자값 사이에는 당연히 공백을 넣어야 합니다.
- 첫번째 인자값에는 원본 파일(또는 디렉토리)의 출발지 경로,
- 두번째 인자값에는 변경될 파일(또는 디렉토리)의 목적지 경로가 들어가야 합니다.
$ mv {옵션 (선택적)} {첫번째 인자값} {두번째 인자값}
만약 목적지 경로와 출발지 경로의 파일(또는 디렉토리)명이 다른 경우 이름 변경이 처리됩니다.
파일 이동
/home/user/Downloads
에 위치한 a.txt
라는 파일을 /home/user/Desktop
으로 이동해보겠습니다. 현재 위치한 Downloads 디렉토리의 경로가 첫번째 인자에, 이동할 디렉토리인 Desktop 경로는 두번째 인자에 넣어줍니다.
$ mv /home/user/Downloads/a.txt /home/user/Desktop/a.txt
위 예제에서 보시듯이 인자 사이에 공백(Space) 한칸을 띄워주어야 합니다. 이렇게되면 왼쪽의 위치(…Downloads…)에서 오른쪽의 위치(…Desktop…)로 이동하게 됩니다.
만약 이동할 때 파일명은 따로 변경하지 않을 경우 두번째 인자에는 파일명이 포함되지 않아도 됩니다. (첫번째 인자에는 반드시 포함) 실행 결과는 위와 같습니다.
$ mv /home/user/Downloads/a.txt /home/user/Desktop
이번에는 디렉토리와 디렉토리 내의 파일 전체를 통째로 이동해보겠습니다. /home/user/Downloads
디렉토리를 /home/user/Desktop
에 옮겨보겠습니다. 위 예시를 응용하면 금방 답을 찾을 수 있습니다.
$ mv /home/user/Downloads /home/user/Desktop
디렉토리를 이동하는 것이므로 파일을 입력할 필요는 없습니다.
이번에는 Downloads에 있는 여러 파일(a.txt
와 b.txt
, c.txt
가 있다고 가정)을 동시에 Desktop 디렉토리로 옮겨보겠습니다. 이해상 편의를 위해 이동할 폴더로 이동(cd)한 후 진행해보겠습니다.
$ cd /home/user/Downloads $ mv a.txt b.txt c.txt /home/user/Desktop/
조금은 복잡해보이지만 결론적으로 인자의 수가 얼마나 많든 마지막 인자가 목적지가 됩니다. 결론적으로 a, b, c 파일을 Desktop 경로로 이동하게 됩니다.
와일드카드 기호(*
)를 사용하면 위 예시를 더욱 간단하게 만들 수 있습니다. (txt 파일이 a, b, c만 있다고 가정)
$ cd /home/user/Downloads $ mv *.txt /home/user/Desktop
파일 이름 변경
이름 변경은 파일 이동을 활용하되, 출발지 경로와 목적지 경로의 파일 이름이 다르면 됩니다.
같은 경로 내에 a.txt
라는 파일이 있을 때 aa.txt
로 이름을 변경하고 싶다면 아래와 같이 사용합니다.
$ mv a.txt aa.txt
주의할 점은 확장자가 있는 파일은 위와 같이 목적지 경로에도 확장자는 꼭 써주어야 합니다. 확장자가 있는 파일인데 쓰지 않는다면 파일 형식이 변경될 수 있습니다.
마찬가지로 디렉토리의 이름도 변경할 수 있습니다. 아래 명령은 myFolder의 디렉토리 이름을 altFolder로 변경하는 예시입니다.
$ mv /home/user/myFolder /home/user/altFolder
또 하나 주의할 점은 디렉토리와 파일(확장자가 없는)은 이름이 같을 수 없습니다. 예를 들어 같은 경로에 abc라는 파일과 abc라는 디렉토리는 존재할 수 없습니다. 이렇게 되면 파일을 강제로 덮어씌울 수 있으므로 유의해서 사용해야 합니다.
mv
의 두가지 특성을 활용하여 다른 경로로 이동하면서 파일 이름을 동시에 변경할 수 있습니다. 아래 예시는 Downloads 디렉토리의 a.txt
파일을 Desktop 디렉토리로 이동하면서 b.txt
라는 이름으로 변경합니다.
$ mv /home/user/Downloads/a.txt /home/user/Desktop/b.txt