|-- sample
     |
     |-- bar
         |-- bar.txt
     |
     |-- foo
         |
         |-- foo.txt
         |
         |- foo-sub
             |
             |- foo-sub.txt
$ cp -r foo/* bar
# *が非常に重要
# -r オプションはファイルもコピー
|-- sample
     |
     |-- bar
         |-- bar.txt
         |
         |-- foo.txt
         |
         |- foo-sub
             |
             |- foo-sub.txt        
     |
     |-- foo
         |
         |-- foo.txt
         |
         |- foo-sub
             |
             |- foo-sub.txt
$ cp -r foo bar
# mvコマンド同様barの中にfooがコピーされる
|-- sample
     |
     |-- bar
         |-- bar.txt
         |
         |-- foo
             |-- foo.txt
             |
             |- foo-sub
                 |
                 |- foo-sub.txt        
     |
     |-- foo
         |
         |-- foo.txt
         |
         |- foo-sub
             |
             |- foo-sub.txt   
cp -Rは、環境によってシンボリックリンクの扱いが異なる。
UNIX/Macは、シンボリックリンクを実体ファイルとしてコピー(コピー先に実体ファイルがコピー)Linuxは、シンボリックリンクをシンボリックリンクとしてコピー(コピー先にシンボリックリンクがコピー)Linuxでシンボリックリンクを実体ファイルとしてコピーする場合は、Lオプションを使用して$cp -RLを使う。
|-- sample
     |
     |-- bar
         |-- bar.txt // hello1
     |
     |-- bar.txt  // hello2
$ mv bar.txt bar
# mv bar.txt bar/ これも↑と同じ
オプションを指定しない場合、確認なしで上書きされる(`bar/bar.txtの内容はhello2になる)。
iオプションを指定すると上書きして良いか確認する(cpコマンドもiオプションも同じ挙動)
$ mv -i bar.txt bar
overwrite bar/bar.txt? (y/n [n])
nオプションは上書きしない(cpコマンドもbオプションも同じ挙動)
$ mv -n bar.txt bar
# この場合メッセージ等は表示されないが上書きされない
# 移動に指定したファイルはそのまま
bオプションについて記載があるが、MacやUbuntuのmvにはbオプションはない。
|-- sample
     |
     |-- bar
         |-- bar.txt
     |
     |-- foo
         |
         |- foo.txt
既存ディレクトリが存在する場合はその中にコピーされる。
$ mv foo bar
# mv foo/ bar  も↑と同
# mv foo bar/ も↑と同じ
# mv foo/ bar/ ↑と同じ
|-- sample
     |
     |-- bar
         |
         |-- bar.txt
         |
         |-- foo
             |
             |- foo.txt