[g,f]
corresponde a g
, ,
(vírgula) ou f
. Você precisaria de [fg]
apenas para f
ou g
.
Agora, tecnicamente.
mv public_html/*.??[gf] public_html/images/
Também moveria um arquivo chamado foo.x.f
, pois ?
também corresponde a .
.
Além disso, se não houvesse nenhum arquivo compatível com esse padrão, algumas conchas como bash
poderiam mover um arquivo chamado literalmente *.??[gf]
( um bug introduzido pela shell Bourne, corrigido novamente em zsh
, você pode contorná-lo em bash
com shopt -s failglob
).
Então, aqui para uma extensão de 3 caracteres que termina em f
ou g
, seria mais, mas ainda com a última ressalva ( [^.]
em vez de [!.]
com alguns shells):
mv public_html/*.[!.][!.][fg] public_html/images/
Para 3 letras :
mv public_html/*.[[:alpha:]][[:alpha:]][fg] public_html/images/
Para com jpg, png ou gif, com o shell zsh
:
mv public_html/*.(jpg|gif|png) public_html/images/
Ou com ksh ou zsh -o kshglob
ou bash -O extglob
:
mv public_html/*.@(jpg|gif|png) public_html/images/