Aparentemente, você está perdendo a definição da sua variável $file
...
Como o uso de seu comando é simplesmente especificar o arquivo de entrada e um nome para o arquivo de saída, você pode usar (dentro do diretório onde tudo é um arquivo que você deseja "colorir"):
for file in * ; do echo th colorize.lua "$file" "${file/./-color.}" ; done
O echo
é apenas para testes, para ver se os arquivos corretos estão sendo encontrados e o correto será feito com eles. Depois de ter feito isso com echo
e verificado que os arquivos corretos foram encontrados e os nomes corretos foram gerados, faça isso sem eco para realmente alterar os arquivos:
for file in * ; do th colorize.lua "$file" "${file/./-color.}" ; done
Mas isso corresponderá a todos os arquivos no diretório e presumirá que todos eles têm um .
, que será substituído por -color.
(se houver mais de um ponto, o primeiro ponto será substituído) por exemplo:
old-pic1.png -> old-pic1-color.png
old-pic2.png -> old-pic2-color.png
em vez de usar *
, que corresponde a todos arquivos, seria melhor usar os arquivos em parte do nome deles, o que é comum, como .png
, então você poderia substituir *
com *.png
para encontrar apenas arquivos com essa finalização.