(Windows ›Cygwin› grep ›Notepad ++) Открыть найденные grep файлы с пробелами - PullRequest
0 голосов
/ 08 октября 2019

Я добавил Блокнот ++ в Cygwin . Я хотел бы иметь возможность находить файлы и открывать их с помощью одной команды, я думаю о чем-то вроде этого:

npp $(grep -l -r 'phrase')

Проблема в том, что кажется, что он не может открывать файлы с пробеламивнутри имен ... :( Может ли эта команда быть изменена для выполнения этой работы?

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Стоит написать другой способ решения этой проблемы. Подстановка команд (это конструкция $()) разбивает выходные данные команды на отдельные аргументы. Он разделяется на символы в переменной $IFS. По умолчанию это три пробельных символа пробел , табуляция и перевод строки .

Поскольку вы вряд ли встретите символы новой строки или табуляциив ваших именах файлов один из вариантов - возиться с $IFS, удаляя пробел.

$ IFS=$'\t\n'
$ npp $(grep -l -r 'regex')

Я не рекомендую вам менять $IFS глобально.

0 голосов
/ 08 октября 2019

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

Кроме того, при создании списка файлов, с которыми вы хотите работать, xargs в порядке.

$ grep -l -R 'regex' | xargs -d '\n' npp

Если в именах ваших файлов может быть новая строка (да, вряд ли в Windows), используйте ноль в качестве разделителя:

$ grep -l -R -Z 'regex' | xargs -0 npp

Меньше ввода и более общий для загрузки.

...