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

Я отвечаю на это просто, чтобы он мог получить ответ ...

Нет, в настоящее время нет RSS-канала релизов.

1
задан 13 April 2017 в 15:23

2 ответа

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

edit 1.svg 2.svg 3.svg

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

edit *.svg

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

edit *wibble*.svg

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

7
ответ дан 24 May 2018 в 08:37
  • 1
    Это, безусловно, лучший ответ. – Seth♦ 26 April 2014 в 03:09
  • 2
    Я хотел бы использовать find -exec, если я хочу выборочно открыть некоторые из них. – Braiam 26 April 2014 в 19:19

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

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

    fi
done

Я протестировал его в каталоге «Картинки» и, похоже, работал.

Я еще не совсем понял первую строку , но он должен помочь убедиться, что мой * работает. Цикл 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 на список файлов, которые вы хотите отредактировать.

2
ответ дан 24 May 2018 в 08:37
  • 1
    Я думаю, nullglob означает, что он не будет пытаться перебирать литерал *, если он ничего не соответствует? – Nattgew 26 April 2014 в 01:26
  • 2
    @Nattgew Это правильно, посмотрев на него больше. – Seth♦ 26 April 2014 в 01:31
  • 3
    @Seth Я положил ваш ответ в gedit, сохранил его как .sh-файл и запустил его ... он работал как сон !!!! Но есть несколько ошибок ... вот файл .sh, который я сохранил: pastebin.ubuntu.com/7332714 , и вот сообщение терминала, которое появляется: pastebin.ubuntu.com / 7332719 Возможно, что-то не так с командой cd, которую я добавил в моем скрипте bash? Или это так, как должен отвечать ваш ответ? – VenkiPhy6 26 April 2014 в 02:08
  • 4
    @Venki Мне, вероятно, не нужны двойные скобки. Я удалил их. Вам также может потребоваться использовать sudo inkscape, поскольку вы редактируете файлы в / usr. – Seth♦ 26 April 2014 в 02:18
  • 5
    @Venki ошибки были связаны с тем, что вы использовали /bin/sh (который dash в системах Ubuntu), а не bash. Тест [[ ]] недоступен в dash. Просто измените свою первую строку (shebang) на #!/bin/bash или #!/usr/bin/env bash, и первая версия Seth будет работать нормально. – terdon♦ 26 April 2014 в 04:14

Другие вопросы по тегам:

Похожие вопросы: