Isso pode ser mais BASH, então é possível, mas talvez ajude na direção certa.
Resumindo, encontre todas as pastas com a apple, inverta o tipo para que
/tmp/apple/test/apple
não causa problemas quando a primeira "maçã" é alterada fora de ordem. Em seguida, alimente a saída em um loop while com a função read carregando uma variável que armazene todas as pastas correspondentes. Finalmente, mv as pastas na estrutura do nome certo.
para diretórios, tente
find ./ -regex '^.*apple' -type d | sort -r | while read badname ; do mv $badname ${badname/%apple/orange}; done
para nomes de arquivos (depois que os diretórios são limpos)
find ./ -regex '^.apple.' -type f | sort -r | while read badname ; do mv $badname ${badname/apple/orange}; done
para conteúdo de arquivo, há muitos outros exemplos disso,
Awk / Sed: How fazer uma busca / substituição recursiva de uma string?