Grep нечувствителен к регистру не работает

Я работаю над исправлением сценария .bat, и возникла проблема со следующей строкой:

forfiles /m *.site /c "grep -i -l \"%1\^|%2\" %CONFIG_PATH%\\@file" > files.temp

По какой-то причине, когда я запускаю это в строке cmd (подставляя значения в 1 и 2), он не выполняет поиск без учета регистра. В предыдущей версии файла строка была другой:

grep -i -l "%1\|%2" %CONFIG_PATH%/*.site > %CONFIG_PATH%\files.temp

Эта версия работает. Я не могу понять, почему второй работает, а первый нет. Любая помощь будет принята с благодарностью.

Благодарю вас!


person Lara    schedule 14.12.2015    source источник
comment
Я не понимаю, зачем вам вообще нужно использовать FORFILES.   -  person Squashman    schedule 15.12.2015


Ответы (1)


Немного покопавшись, я нашел проблему. Проблема не в grep, а в forfiles. Все, что мне нужно было сделать, это добавить дополнительный пробел между grep и -i. Это известная ошибка с файлами forfiles. Подробная причина в этой теме:

для файлов без cmd/c

person Lara    schedule 14.12.2015
comment
Я думаю, что наиболее общее решение (если оно есть) для функции forfiles — это дважды указать имя команды, например forfiles /C "grep grep -i ..."; двойной пробел может помочь в этом случае, но не во многих других... - person aschipfl; 15.12.2015