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.