리눅스에서 파일 처리를 할 때 가장 많이 쓰이는 명령어 중에 하나인 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
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…