Cygwin usando curinga para aparar todas as imagens

3

Infelizmente, sou forçado a usar o Windows. Então, eu instalei Cygwin para usar alguns comandos do Linux.

O seguinte comando funciona bem. Substitui uma imagem pela sua versão aparada.

"C:\Program Files\Cygwin\bin\convert" image1.png -trim image1.png 

No entanto, como posso executar este comando em todo o arquivo de imagem?

"C:\Program Files\Cygwin\bin\convert" * -trim ????
    
por ar2015 17.08.2015 / 04:06

2 respostas

6

Você instalou o cygwin, portanto, é possível usar apenas o shell para obter suporte de comando máximo: "C:\Program Files\Cygwin\cygwin.bat
isso lhe dará uma concha bash Então você pode mudar diretamente para ir ao local das imagens. Suponha que o local da sua imagem seja "D:\Your Name\Images" , para lá digite cd "/cygdrive/d/Your Name/Images" e então chame seu comando usando o bash para loop :

for file in *
do
convert "$file" -trim "$file"
done
    
por 17.08.2015 / 04:22
2

Considere isso como uma expansão / aprimoramento da resposta do @Slyx .

O Cygwin tem um utilitário útil cygpath para converter o caminho do Windows para o estilo * nix compreendido dentro do bash shell do Cygwin:

$ cygpath "D:\Path\To\Images"
/cygdrive/d/Path/To/Images

Em vez do for -loop explícito sugerido, você também pode considerar usar find que tenha melhor suporte para filtragem de nomes de arquivos e suporte possivelmente mais seguro para nomes com espaços (como você pode encontrar no Windows):

find "$(cygpath "D:\Path\To\Images")"/ -type f -name '*.png' -exec convert '{}' -trim '{}' \;
  1. Dentro do diretório D:\Path\To\Images ,
  2. Localizar arquivos ( -type f ) terminando com png ( -name '*.png' ),
  3. E para cada um deles, exec o comando convert com espaços reservados '{}' as (cotados) para cada arquivo resultante.
por 17.08.2015 / 08:44