「作業中」フォルダに花の写真をまとめた「花」というフォルダがあって、「完了」フォルダに移動する、とします。
このとき、移動先の「完了」フォルダにすでに同じ名前の「花」フォルダがあったらどうなるのか、というのが今回のテーマです。
1. Windows PCの場合は、どちらも残せる
Windows PCでフォルダを移動した場合、中のファイルはすべて、移動先の同名フォルダに移動します。
つまり、「作業中¥花」フォルダの中身と「完了¥花」フォルダの中身が合計されます。
また、もし2つのフォルダの中にも同名ファイルがあった場合には、ファイルごとに「置き換え」るか「両方とも保存する」か選択することができます。
もし、完全に同じファイルなら置き換え、同名だけど中身が違うファイルなら、両方を保存します。その場合は、ファイル名の末尾に”(2)”などの番号が付加されます。
ですので、あまり同名フォルダを気にせずに、フォルダの整理ができます。
1-1. Mac OSの場合、同名フォルダは消える!
ところが、Mac OSで同様のフォルダ移動をする場合は、注意が必要です。
同じ名前のフォルダがあると「置き換えるか?」という確認メッセージが表示されるんです。
“〜”という名前の新しい項目がすでにこの場所にあります。現在移動中の古い項目で置き換えますか?
この「置き換え」は危険な操作で、先に移動先にあった「完了/花」フォルダの中のファイルは消去されてしまいます。
はい…うっかり消去してしまったのです(;_;)
1-2. Mac OSでもコピーなら「結合」できるけど
フォルダの「移動」ではなく、「コピー」ならどうでしょう?
フォルダをドラッグするときにWindowsなら、「Ctrl+ドラッグ」をすると「コピー」になりますよね。Macの場合は、「option+ドラッグ」が「コピー」です。
フォルダをコピーした場合、コピー先に同じ名前のフォルダがあると、「置き換える」とは別に「結合」という選択肢が表示されます。
「結合」だと、両方のフォルダの中身が「完了/花」フォルダに保持されます。
ただし、この操作は「フォルダのコピー」なので、元のフォルダ「作業中/花」は残っています。移動したい場合は、改めて元のフォルダを削除する必要があります。
2. コマンドで解決 ditto
#!/bin/sh
SRC=~/作業中
DST=~/完了
ditto $SRC $DST
rm -r $SRC/*
「作業中」フォルダ内の全てのフォルダを「完了」フォルダに統合しようと思うと、シェルスクリプトを利用することができます。
dittoコマンドは、コピー元フォルダの中身をコピー先フォルダに統合(マージ:merge)してコピーします。最後に、rmコマンドで、コピー元のフォルダの中身を削除しています。
ファイル・フォルダの移動は同名の場合があるので注意が必要ですね。
余談ですが、「ditto(ディト)」という見慣れない言葉。
実はラテン語由来で「同上」、つまり「上記と同じ」という意味です。原型は「dittare」という動詞で「宣言する」「繰り返す」という意味です。
「〃」は「ディト・マーク」ともいいます。
こちらもどうぞ