본문 바로가기
컴퓨터/리눅스

mv : 파일 이동 및 파일 이름 변경 명령어

by adnoctum 2010. 8. 31.
   mv 는 move의 약자로 두 가지 기능을 하는데, 첫 번째는 파일 및 디렉토리를 이동시키는 것이고, 두 번째는 파일 및 디렉토리 '이름'을 변경하는 것이다. 윈도우즈에서 주로 작업을 하던 경우, rename 과 같은 류의 명령어를 이용하여 파일 이름을 변경하고자 하며, mv 를 이용하여 파일 이름을 변경한다는 것에 약간 의아함을 가질 수 있긴 하다. -.-a 난 그랬었다. ㅋ.

   사용법은 너무나 간단하여 별도의 글로 쓸 필요조차 없을 것 같은데 유입 검색어 때문에 작성한다. 형식은 너무나도 간단하여,

mv [OPTION] [source] [dest]

에 불과하다. man mv 를  이용하여 man page를 참고하면 된다. 그 전형적인 사용 예를, 실제 내가 사용했던 명령어 중에서 뽑아 보자.

[adnoctum@bioism analysis_code]$ history | grep mv
  192  mv MetaNoMetaAll.analysis.config MetaNoMeta.all.analysis.config
  453  mv ../GSE12093/GSE12093.group.config.feature1.txt .
  454  mv GSE12093.group.config.feature1.txt GSE12093_2.group.config.feature1.txt
  478  mv a.txt Breast.Cancer.All.config
  661  mv a.txt HPRD2PromoterSeq.HPRD.txt
  718  mv test.txt ./Responsiveness/Cancer/BreastCancer/all_cluster_expr_auc_breast_cancer_with_random.txt
  930  mv GSE12945_4.group.config GSE12945_4.group.config.txt
  943  mv ~/GSE12093.group.config.feature1.txt .
  950  mv ~/GSE17536.group.config.feature* .
  953  mv ~/GSE21653.group.config.feature1.txt .
  956  mv ~/GSE3141.group.config.feature1.txt .
  960  mv ~/GSE12945.group.cnofig.feature2.txt GSE12945_4.group.config.feature1.txt
  961  mv ~/GSE12945.group.config.feature1.txt GSE12945_4.group.config.feature2.txt
  969  mv ~/GSE14333.group.config.feature1.txt .
 1075  man mv
 1076  history | grep mv
[adnoctum@bioism analysis_code]$

뽑는 것도 간단하게, 현재 세션에서 했었던 명령어를 출력하는 history 와, 표준 입력으로 출력되는 내용을 한 줄씩 받아서 원하는 줄만 선택해서 뱉어 주는 grep 을 사용하여 위처럼 뽑으면 된다.

난 mv 의 option 들은 잘 안 사용하므로 주로 mv [source] [dest] 형태를 띄게 된다. 이 때

[source]는 이동시킬 파일, 또는 파일 이름을 변경시킬 때는 원래 파일 이름,
[dest]는 이동시킬 위치, 또는 파일 이름을 변경시킬 때는 변경된 후의 파일 이름,

이 된다.

만약 [source]와 [dest]의 한 단계 바로 위 또는 현재 경로까지의 전체 경로가 같다면 파일 이름이나 디렉토리 이름을 변경하는 것이고, 아니라면 이동시키는 것이 되겠지. 따라서,

453  mv ../GSE12093/GSE12093.group.config.feature1.txt .

는 현재 경로의 바로 위에서 GSE12093/GSE12093.group.config.feature1.txt 라는 파일을 현재 경로( .으로 표시된)로 가져오는 것이다. 반면,

454  mv GSE12093.group.config.feature1.txt GSE12093_2.group.config.feature1.txt

는 [source], [dest] 모두 현재 경로에 있으며, 따라서 전체 경로가 동일하다. 이런 경우라면 파일 이름을 변경하는 것이 되겠지. 따라서 454번 명령은 파일 이름을 변경하고 있는 것이다.

  950  mv ~/GSE17536.group.config.feature* .

950번 명령은 내 홈 경로에 있는 GSE17536.group.config.feature 로 시작하는 모든 파일들을 현재 경로로 이동시키는 것이다.


괜히 어렵게 느껴질 수 있는데, 이동시킬 목적의 mv 는 그 의미대로 하면 되고, 파일 이름 변경시킬 때도 예전 파일 이름을 새로운 파일 이름으로 이동시키는 것인데 경로가 같다고 생각해버리면 된다. 사실 나중에는 그냥 습관적으로 쓰기 때문에 별 생각이 없게 쓰게 되지만... >.<""


참고로 linux 에서도 dir 이나 rename 은 ms-dos 에서와 같이 사용할 수 있게 되어 있긴 하다, ㅋ. 또한 C나 C++로 rename을 사용할 수도 있는데, 그것에 대한 설명서는 man 2 rename 하면 자세하게 나온다. 뭐, 별 것 없다, 그냥 직관적으로 사용하면 된다.