我習慣用rsync, (而mv不能做到.)
如果要移動整個目錄, 我通常用rsync後再用rm移除來源目錄
$ rsync -avH --delete {source}/ {target}
$ rm {source} -rf
請特別注意--delete將刪除對象目錄中多餘檔案及子目錄, 建議加上-dry-run先測試, 看看rsync做了什麼, 以免誤刪.
$ rsync -avH --delete --dry-run {source} {target}
請注意{source}或{target}的結尾路徑符號{/}, 會導致不同的結果.
以目錄source為例:
$ mkdir -p source/dir01/dir02
$ touch source/dir01/dir02/{file01,file02,file03}
$ touch source/dir01/{file04,file05,file06}
$ tree source
source
└── dir01
├── dir02
│ ├── file01
│ ├── file02
│ └── file03
├── file04
├── file05
└── file06
$ rsync -avH --delete source target
表示在同步source目錄及其下的檔案與子目錄到target目錄下:
$ tree target
target
└── source
└── dir01
├── dir02
│ ├── file01
│ ├── file02
│ └── file03
├── file04
├── file05
└── file06
因此, 指令應為:
$ rsync -avH --delete source/ target
表示在同步source目錄下的檔案與子目錄到target目錄下, 不含目錄source:
$ tree target
target
└── dir01
├── dir02
│ ├── file01
│ ├── file02
│ └── file03
├── file04
├── file05
└── file06
之後再
$ rm -rf source