深究cp拷貝資料夾時`/`的用法

SolomonXie發表於2019-02-16

假設現有一個source資料夾:

source
    sub
        a.jpg
    b.jpg
    c.jpg

目標資料夾「不存在」的情況

$ cp -r source target
$ cp -r source/ target
$ cp -r source/ target/

▲ 結果:「source = target」以上三句話一樣,都是建立一個source的同級克隆,只不過名字不同:
target
    ......
source
    ......

$ cp -r source/* target
▲ 結果:「命令錯誤」

目標資料夾「已存在」且為空

$ cp  -r source target

▲ 結果:「source ≠ target」無論是否有內容,都在target目錄下存放source目錄:
source
    ......
target
    source
        ......

$ cp  -r source/ target
$ cp  -r source/ target/
$ cp -r source/* target
$ cp  -r source/* target/
▲ 結果:「source = target」以上幾句話一樣,會正確的把source下的內容拷貝到target下
target
    ......
source
    ......

目標資料夾「已存在」且不為空,且無同名檔案

$ cp  -r source target
$ cp  -r source target/

▲ 結果:「source ≠ target」無論是否有內容,都在target目錄下存放source目錄:
source
    ......
target
    source
        ......

$ cp  -r source/ target
$ cp  -r source/ target/
$ cp  -r source/* target
$ cp  -r source/* target/
▲ 結果:「target ∋ source」會把source下的內容全部拷貝到targe之中
source
    ......
target
    ......
    ......

目標資料夾「已存在」且有衝突檔案

▲結果:「預設覆蓋有衝突的目標檔案」無論怎麼拷貝都預設覆蓋

相關文章