基礎指令:利用 mv 搬移檔案

技術手札基礎指令:利用 mv 搬移檔案

本文簡介指令 mv 的使用方法。

簡介

mv 是一個包含於 GNU Core Utilities 的指令,可用於搬移檔案。

使用方法

mv 有兩種使用方法。

第一種是直接指定檔案的目標路徑:

mv SOURCE_PATH TARGET_PATH

代表我們想將位於 SOURCE_PATH 的檔案(包含目錄、符號連結)搬移到 TARGET_PATH。這種用法必須滿足以下限制:

  1. SOURCE_PATH 必須已經有檔案存在。
  2. TARGET_PATH 並非目錄,也不是指向目錄的符號連結。(是目錄的話,會被視為以下的第二種用法。)

第二種是先給定一組檔案,再指定一個目標目錄:

mv SOURCE_PATH... TARGET_DIR

代表我們想將依序將各個 SOURCE_PATH 指定的檔案(包含目錄、符號連結)搬移到目錄 TARGET_DIR 底下。這種用法必須滿足下限制:

  1. 各個 SOURCE_PATH 必須已經有檔案存在。
  2. TARGET_DIR 是目錄或指向目錄的符號連結。

範例

搬移檔案

假設我們在目錄 /home/alice 中,其中有 archiveexperiment 兩個子目錄。在 ./experiment 中有檔案 memoreport

$ pwd
/home/alice
$ find
.
./archive
./experiment
./experiment/memo
./experiment/report

現在我們想將 ./experiment 中的 memoreport 搬移至 ./archive 底下。這時候就可以使用 mv 搬移:

$ mv experiment/* archive

上述指令中的 experiment/* 會展開成 experiment/memo experiment/report

這時候再檢查一次目錄結構,即可確認檔案已經都搬移到 ./archive 當中:

$ find
.
./archive
./archive/memo
./archive/report
./experiment

搬移目錄

一樣假設我們在目錄 /home/alice 中,其中有 archiveexperiment 兩個子目錄,且在 ./experiment 中有檔案 memoreport

$ pwd
/home/alice
$ find
.
./archive
./experiment
./experiment/memo
./experiment/report

現在我們想將整個目錄 ./experiment 搬移至 ./archive 底下。使用 mv 搬移:

$ mv experiment archive

備註 上述指令等同於 mv experiment archive/experiment

這時候再檢查目錄結構,即可確認 ./experiment 已經被搬移到 ./archive/experiment

$ find
.
./archive
./archive/experiment
./archive/experiment/memo
./archive/experiment/report