Como abrir vários arquivos de imagem da linha de comando, consecutivamente, para edição?

7

Digamos que eu tenha três arquivos de imagem para editar. Considere todos os arquivos em ~/Pictures . Deixe o nome do primeiro arquivo ser 1.svg , o nome do segundo arquivo seja 2.svg e o nome do terceiro arquivo seja 3.svg . Eu tenho o editor Inkscape. Agora, quero que um script bash seja executado para que o seguinte aconteça:

  1. Primeiro 1.svg deve abrir para eu editar.
  2. Após a edição, quando eu fechar esse arquivo, automaticamente 2.svg deve abrir para eu editar.
  3. Agora, quando concluir a edição 2.svg , quero que 3.svg seja aberto para edição.
  4. Agora, depois de editar 3.svg , o script deve terminar fechando o GIMP.

PS: - Se você está se perguntando se isso é trabalho em casa, não é! Veja aqui . Você vai notar que eu tenho que editar imagens lá. Para tornar essa resposta melhor, preciso de ajuda aqui. Então, por favor ajude. Também EU SOU UM PRINCIPAL INICIANTE . Eu não sei nada sobre o bash. Então, explique sua resposta da forma mais elaborada possível . Além disso, você pode considerar dar uma resposta com o editor do GIMP para editar arquivos .jpg. Pode ser útil para os outros. A propósito, estou usando 14.04 LTS. Desde já, obrigado.

ATUALIZAÇÃO: - A resposta vinculada acima foi editada de acordo com a resposta aceita abaixo.

    
por VenkiPhy6 25.04.2014 / 21:50

3 respostas

8

Como Rmano diz, você pode simplesmente fazer um loop for no terminal:

for i in 1.jpg 2.jpg 3.jpg; do gimp $i; done

Execute isso no diretório onde os arquivos estão ou cada arquivo deve ter o restante do caminho para ele. Você pode colocar quantos arquivos quiser lá.

O GIMP irá abrir o arquivo, editá-lo e fechar o GIMP. Quando o GIMP for fechado, o loop for continuará e abrirá o próximo arquivo na lista.

Se você não quiser fechar o GIMP toda vez, pode tentar adicionar um read -p :

for i in 1.jpg 2.jpg 3.jpg; do gimp $i && read -p "Press [Enter] key to continue..."; done

Quando terminar de editar um arquivo, você poderá pressionar Enter no terminal e o próximo arquivo deverá abrir no GIMP, sem ter que fechar o GIMP.

Esta é a maneira mais simples de pensar, pode ser complicado tentar detectar quando o GIMP fecha um arquivo.

Nota para o seu caso

A maioria dos arquivos são arquivos SVG, como Rmano apontou. Portanto, liste todos os seus arquivos SVG e substitua gimp por inkscape . Os arquivos PNG estarão bem com gimp .

    
por Nattgew 25.04.2014 / 22:05
7

O seguinte comando abre os arquivos no aplicativo associado padrão :

edit 1.svg 2.svg 3.svg

Se você deseja abrir todos os arquivos .svg em ordem alfabética, use o curinga * :

edit *.svg

* significa qualquer seqüência de caracteres, então você pode usá-la de outras maneiras; por exemplo, para abrir sucessivamente os arquivos .svg cujo nome contém wibble :

edit *wibble*.svg

Outros curingas existem se você quiser selecionar arquivos com base em padrões mais precisos.

    
por Gilles 25.04.2014 / 22:43
2

Você pode tentar algo assim:

shopt -s nullglob
for i in *
do
    if [ -d "$i"  ]
     then
        continue
    else
        inkscape "$i"

    fi
done

Eu testei no meu diretório Pictures e parecia funcionar.

Ainda não entendi completamente a primeira linha, mas ela está lá para ajudar a garantir que meu * funcione. Em seguida, o loop for faz um loop em tudo no diretório atual, um por vez. Se não for um diretório, ele será aberto no Inkscape para edição.

Quando terminar de editar e fechar o inkscape, a próxima imagem será aberta até que não haja mais imagens.

Para o seu caso específico (depois de ler a pergunta vinculada) isso pode funcionar melhor. Lembre-se de cd to /usr/share/unity/icons e, em seguida, execute isto:

for i in file1.svg file2.svg file3.svg
do
    if [ -d "$i"  ]
     then
        continue
    else
        inkscape "$i"

    fi
done  

substituindo file1.svg file2.svg file3.svg por uma lista dos arquivos que você deseja editar.

    
por Seth 25.04.2014 / 22:12