NAMES='ls *.$1'
Esta é uma tarefa. A variável $NAMES
recebe um valor. O valor é considerado como a saída do comando em backquotes (consulte Substituição de Comando em man bash
). $1
é um parâmetro especial, corresponde ao primeiro argumento do script. Assim, parece que o script deve ser executado com uma extensão como parâmetro (por exemplo, ./script.sh txt
), a saída do comando ls
será armazenada na variável.
filed=$(file%:$1).$2
Isso é muito estranho. Tem certeza de que os parênteses não eram chaves, na verdade? E também deve haver um .
em vez do :
.
filed=${file%.$1}.$2
${var%pattern}
corta o padrão do final da variável. Veja Expansão de Parâmetros em man bash
para detalhes. Então, neste caso, ele retira o ponto mais a extensão dada pelo primeiro parâmetro e adiciona um ponto e o segundo parâmetro.
BTW, a linha de movimento provavelmente deve ser
mv $file $filed
caso contrário, não haveria razão para usar um loop.