sed substitution procura instâncias (todas as instâncias desde que você está usando g ) correspondentes ao primeiro argumento e substitui a correspondência completa pelo segundo argumento. Então, se você incluir “AIR” no primeiro argumento, ele será substituído - você precisa incluí-lo no segundo argumento se quiser mantê-lo. Quando sed reclama de uma referência inválida, isso significa que você não definiu um grupo correspondente no primeiro argumento (usando \( e \) ou ( e ) desde que você tenha especificado -r ).
Como você está procurando por "AIR" seguido por qualquer caractere seguido por dígitos, sugiro o seguinte:
sed -r 's/AIR([^[:digit:]]*)([[:digit:]]+).jpg/AIRtest.jpg/g'
Isso substitui "AIR" por "AIR", qualquer non-digits com "test" e mantém todos os dígitos depois disso. Se você não precisar processar os caracteres entre "AIR" e os dígitos, poderá ignorá-los:
sed -r 's/AIR[^[:digit:]]*([[:digit:]]+).jpg/AIRtest.jpg/g'
Se você tiver o Perl rename , poderá transpô-lo para renomear seus arquivos:
rename 's/AIR[^[:digit:]]*([[:digit:]]+).jpg/AIRtest.jpg/g' AIR*.jpg
ou
rename 's/AIR[^[:digit:]]*([[:digit:]]+).jpg/AIRtest$1.jpg/g' AIR*.jpg
( rename prefere $ para referências de grupos).