Monday, April 13, 2020

ファイルのコピーが実は難しい


問題。以下のような構成のフォルダがあります。同名で中身の異なるファイルは、古いほうのファイル名の末尾に「_old」などという文字列をつけた上で、2つのフォルダの中身を1つにまとめたいと思います。どうすれば早いでしょうか。


回答。「folder_A」の中身の方が古いようなので、「folder_A」と「folder_B」を見比べて、同名のファイルがあれば、「folder_A」のファイル名を変更した上で、「folder_B」からコピーする。ここでは「2-1-1.jpg」と「2-1-2.jpg」は中身が同じようなので、この2つは放置する。そして、「folder_A」の「2-2-1.png」「2-2-2a.png」「2-2-2b.png」「2-2-2c.png」のファイル名を変更して、「folder_B」から「folder_A」に「2-2-1.png」「2-2-2a.png」「2-2-2b.png」「2-2-2c.png」をコピーする。これが正解だろう。

しかし、ここでは6つしかファイルがなかったので、上の方法でもできたが、数十、あるいは数百あったらどうだろう。ものすごく神経を使う作業を何時間もやらないといけなくなる。その上、操作ミスする確率は非常に高くなる。

では、どうすればいいか。いくつか方法がある。

1.バックアップソフトを使う

Macの「ChronoSync」などのバックアップソフトを使うと、コピー時にいろいろな設定ができる。ファイルの比較もかなり厳密にやってくれるので、ファイルのタイムスタンプとサイズだけで見比べるより確実だ。インターフェイスもしっかりしているので、間違えにくい。デメリットは、コピー前の設定が大変なことだ。正しく設定するには、かなり手間がかかる。バックアップソフトは、どう考えてもオーバークオリティである。

2.プログラミング言語を使う

AppleScriptやPythonの資料をちょこちょこ読んでみたが、いずれもワシにはかなり難しい。AppleScriptは、使いこなせるようになれば、Macユーザーにとっては便利なツールなのだが、いかんせん、資料が少ない。ここ数年はほとんど書籍も発売されていない。基本から学ぶにはもう遅すぎるようだ。一方、Pythonなら資料は豊富にある。『退屈なことはPythonにやらせよう』(オライリー)など入門者向け資料も手元にある。読んでみたところ、「shutil」モジュール(あるいは、それに類するもの)を使えば良さそうなところまではわかった。ただ、入門書によくある問題、すなわち「書いてあることはできるのだが、自分のやりたいことはできない」ところに当たってしまう。

3.Finderを使う

プログラミング言語を調べながら、何かいいソフトはないかと探していたら、こんなページに当たった。

Macで5個以上のファイル移動で「両方とも残す」方法 - 非天マザー by B-CHAN

MacもWindowsパソコンも基本的には同じ。 ファイル操作もほとんど同じです。 ただし、細かいところで違いがあります。 今回はMacでのファイルの移動について。 あるファイルを別のフォルダに移動させるとき、移動先のフォルダに同じ名前のファイルがあると、いくつかの選択が考えられます。 Windowsなら、こんな感じになります。 Macの場合は、移動するファイルの数によって対応が異なります。
Finderでファイルを移動するときに、移動先に同じ名前のファイルがあると、移動元のファイル名に「〜のコピー」と付けてくれる。今回の例では、「folder_A」のファイルを「folder_B」に移動しようとすると、このような画面になる。


ここで「両方とも残す」をクリックすれば良い。あとは、リネームソフトで「〜のコピー」を「_old」など好きな文字列に変更する。

ということで、灯台下暗し。Finderで十分間に合ったという話だった。


No comments: