Use apenas um loop:
for x in *.CR2
do
[ -e "${x%.CR2}.jpg" ] || echo rm "$x"
done
Isso examina todos os arquivos .CR2 e chama x . ${x%.CR2} expande para o nome do arquivo com .CR2 removed , portanto nós adicionamos a extensão .jpg e verificamos se existe com -e . Se isso não acontecer, removemos o arquivo .CR2 original.
O texto acima tem um echo extra para que você possa verificar se está escolhendo os arquivos desejados antes de realmente excluir qualquer coisa. Você pode colocar tudo em uma linha, se quiser:
for x in *.CR2 ; do [ -e "${x%.CR2}.jpg" ] || echo rm "$x"; done
e será fácil editá-lo de forma interativa.
Alguns shells têm uma expansão de parâmetros mais poderosa que pode ser capaz de fazer isso, mas o Bash não é um deles. Eu suspeito que o código que você encontrou foi alvo de um desses.