grep для файлов и открытый результирующие соответствия

Обычно, я делаю все свои задачи обработки изображения с convert от ImageMagic, но я не могу заставить это играть по правилам с svg файлами. Можно, однако, использовать inkscape самостоятельно из командной строки:

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

Это создаст названные файлы foo.bmp.svg. Для разбираний в именах попробуйте это:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

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

                                 enter image description here

Так, все еще необходимо нажать "OK" вручную, но это еще намного намного быстрее, чем выполнение его файл файлом.

Выходные изображения идентичны насколько я могу сказать:

  enter image description here


Теоретически, оба convert и rsvg-convert должен смочь сделать это, но я не мог заставить это работать хорошо над моими изображениями через несколько минут, я потратил попытку. Их оба стоит изучить, тем не менее.

2
13.04.2017, 15:36
4 ответа

Я не уверен, какая версия GREP вы используете, но если я читаю Человек страницы GREP правильно, затем сканирование будет остановлено после первого успешного совпадения. Это то, что вы хотите? То, что я понял от вашего вопроса, было то, что вы хотели «открыть все файлы».

Если вы не возражаете, используете VIM или GVIM , затем вы можете использовать это:

$ grep -n mystring *.ext > /tmp/mystring.list
$ vim -q /tmp/mystring.list

(я никогда не пытался объединить эти две команды с Vim не читает QuickFix / Errorfile из STDIN )

VIM откроет первый файл в / TMP / MyString. Список и поместите курсор прямо в линию, где был найден MyString . Вы можете перейти к следующему экземпляру, используя : CN и предыдущий экземпляр с использованием : CP .

Если вы не являетесь VIM , и, поскольку вы сказали, что связанный вопрос не помог вам много, то Найти ... -Print0 должен помочь - как уже предложено Отказ

1
27.01.2020, 22:00

Если у вас есть пробелы в именах файлов, вам нужно использовать Print0 опция для файла, позже -0 для xargs И, наконец, -I {} для второго Xargs .

find . -iname "*.maxpat" -print0 | xargs -0 grep -l "mystring" | xargs -I '{}' open '{}'

Испытано с Emacs как Open команда .

3
27.01.2020, 22:00

-EXEC принимает состояние выхода команды, которую вы помещаете в нее и логично используете его в Найти

Итак, просто что-то простое, как это должно работать

find . -iname "*.ext" -exec grep -q "mystring" {} \; -exec open {} \;
1
27.01.2020, 22:00

Использование PWD находит:

find `pwd` -iname *.maxpat | xargs grep -l "mystring" | xargs open
-1
27.01.2020, 22:00

Теги

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