grep -l
разделяет имена файлов новой строкой. Вы должны видеть символ новой строки как разделитель аргументов, а не разделять его на обычное пространство.
Кроме того, при создании списка файлов, с которыми вы хотите работать, xargs в порядке.
$ grep -l -R 'regex' | xargs -d '\n' npp
Если в именах ваших файлов может быть новая строка (да, вряд ли в Windows), используйте ноль в качестве разделителя:
$ grep -l -R -Z 'regex' | xargs -0 npp
Меньше ввода и более общий для загрузки.