前回投稿で、ファイル名に含まれる空白をアンダーバーに置き換えるスクリプトがうまく機能することを確認したのですが、その後気をつけなければいけないことがあることを知りました。
それは、ファイル名に空白が複数個含まれる場合です。
たとえば、「a b c.txt」というファイルがあったとします(a、b、cそれぞれの間に半角スペースが入っている)。
このファイルに対して先のスクリプトを実行すると・・・。
$ touch “a b c.txt”
$ ls
a b c.txt
$ find -name “*.*” | rename \ _ *.*
$ ls
a_b c.txt
わかりづらいですが、先のスクリプトを走らせた結果作成されたファイルの名称は「a_b c.txt」。つまりこのスクリプトでは最初の空白のみアンダーバーに置き換えるだけなのです。
もちろんこの状態で再度スクリプトを走らせれば全ての空白を置き換えることができます。
$ ls
a_b c.txt
$ find -name “*.*” | rename \ _ *.*
$ ls
a_b_c.txt
なので差し当たってはこのスクリプトを複数回繰り返させることで問題は解決するのですが、なにかもっと良い方法があるのでしょうかね??