Как открыть несколько файлов изображений из командной строки, последовательно для редактирования?

7

Допустим, у меня есть три файла изображений для редактирования. Рассмотрите все файлы в ~/Pictures . Пусть имя первого файла будет 1.svg , имя второго файла - 2.svg , а имя третьего файла - 3.svg . У меня есть редактор Inkscape. Теперь, я хочу, чтобы скрипт bash выполнялся так, чтобы выполнялось следующее:

  1. Первый 1.svg должен открыть для меня редактирование.
  2. После редактирования, когда я закрываю этот файл, автоматически открывается файл 2.svg для редактирования.
  3. Теперь, когда я завершаю редактирование 2.svg , я хочу, чтобы 3.svg открывался для редактирования.
  4. Теперь после редактирования 3.svg скрипт должен завершиться закрытием GIMP.

PS: - Если вам интересно, если это домашняя работа, это не так! См. здесь . Вы заметите, что мне нужно редактировать изображения. Чтобы лучше ответить, мне нужна помощь здесь. Так что, пожалуйста, помогите. Также Я ПОЛНОЕ НАЧИНЕЕ . Я ничего не знаю о bash. Поэтому объясните свой ответ как можно более тщательно . Также вы можете подумать о том, чтобы дать ответ с помощью редактора GIMP для редактирования файлов .jpg. Это может быть полезно для других. Кстати, я использую 14.04 LTS. Заранее спасибо.

UPDATE: - приведенный выше ответ был отредактирован в соответствии с принятым ответом ниже.

    
задан VenkiPhy6 25.04.2014 в 21:50
источник

3 ответа

8

Как говорит Рмано, вы можете просто сделать цикл for в терминале:

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

Либо запустите это в каталоге, где находятся файлы, либо каждый файл должен иметь остальную часть пути к нему. Вы можете разместить столько файлов, сколько хотите.

GIMP откроет файл, вы его отредактируете, а затем закройте GIMP. Когда GIMP закрывается, цикл for продолжается и открывает следующий файл в списке.

Если вы не хотите закрывать GIMP каждый раз, вы можете попробовать добавить read -p :

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

Как только вы закончите редактирование файла, вы сможете нажать Enter в терминале, и следующий файл должен быть открыт в GIMP, без необходимости закрывать GIMP.

Это самый простой способ, о котором я мог думать, он может усложниться, пытаясь обнаружить, когда GIMP закрывает файл.

Примечание для вашего случая

Большинство файлов - это файлы SVG, как отметил Ремано. Поэтому перечислите все ваши файлы SVG и замените gimp на inkscape . Файлы PNG будут в порядке с gimp .

    
ответ дан Nattgew 25.04.2014 в 22:05
источник
7

Следующая команда открывает файлы в связанном по умолчанию приложении :

edit 1.svg 2.svg 3.svg

Если вы хотите открыть все .svg файлов в алфавитном порядке, вы можете использовать групповой символ * :

edit *.svg

* обозначает любую последовательность символов, поэтому вы можете использовать ее другими способами; например, чтобы последовательно открывать файлы .svg , чье имя содержит wibble :

edit *wibble*.svg

Существуют и другие подстановочные знаки, если вы хотите выбирать файлы на основе более тонких шаблонов.

    
ответ дан Gilles 25.04.2014 в 22:43
2

Вы можете попробовать что-то вроде этого:

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

    fi
done

Я тестировал его в каталоге Pictures и, похоже, работал.

Я еще не совсем понимаю первую строку, но я должен помочь убедиться, что мой * работает. Затем цикл for перебирает все в текущем каталоге по одному за раз. Если это не каталог, он открывает его в Inkscape для редактирования.

Когда вы закончите редактирование и закрытие inkscape, следующее изображение откроется, пока не появится больше изображений.

В вашем конкретном случае (после прочтения связанного вопроса) это может работать лучше. Запомните cd до /usr/share/unity/icons , а затем запустите это:

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

    fi
done  

заменив file1.svg file2.svg file3.svg на список файлов, которые вы хотите отредактировать.     

ответ дан Seth 25.04.2014 в 22:12