Esta não é uma questão direta - é um pedido de comentários e exemplos de scripts - e pode gerar muitas discussões. É melhor postar muitas pequenas perguntas focadas para obter um answare.
De qualquer forma, no servidor mac você pode contar com um miriad de ferramentas de linha de comando para ajudá-lo no script.
Primeiro, você pode listar todos os arquivos / pastas nos quais deseja aplicar regras:
$> find "rootPathToSearchOn" -name "namingRule" -regex "betterNamingRule"
ex:
$> find . -maxdepth 1 -regex "./[a-zA-Z]*[_'][a-zA-Z]*"
./o_neil
./o'neil
...
Dessa forma, você pode separar aqueles com sublinhados daqueles com aspas. Em seguida, passando a saída de find para 'xargs', você pode chamar um script para os arquivos selecionados:
$> find . -maxdepth 1 -regex "./[a-zA-Z]*[_][a-zA-Z]*" -print0 | xargs -0 -I fileName ./myScript.sh fileName
Um script simples como:
nameToTest='echo $1 | tr "_" "'"'
if [ -e $nameToTest ];
then echo $nameToTest has a collision to $1;
fi;
Deve produzir algo como:
./o'neil has a collision to ./o_neil
Nesse caso, você pode preencher o bloco "then" com as ações desejadas.
Agora, a estratégia para mesclar depende do seu cenário - a data de criação do diretório não indica a data de seu conteúdo - e somar o tamanho do arquivo do conteúdo do diretório não indica a atividade nele.