MACの場合、
ファイル名につけた濁点などが二文字と判断されてしまって、
文字コードがおかしくなることがあるかと思います。

ですので、
カガク.txt
カガク.txt
二つ同じファイルに見えるのですが、上は、ガが1文字、下が2文字
などに判断されてしまって、検索などの際に問題が発生します。

そこで、全部一斉に、ファイル名の濁点を一文字に変換するスクリプトを作りたいのですが、
どのようにしたら良いでしょうか?

ファイル名を1文字ずつ文字コードで表示

$dir = ".";
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
         for ($i = 0 ;$i < mb_strlen($file);$i++){
             print mb_substr($file,$i,1);
             printf("0x%x", ord(mb_substr($file,$i,1)));
             //この辺りで処理すべきかと思うのですが。。。。
         } 
         print "\n";
       }
       closedir($dh);
   }
}