
Мне нужен синтаксис GREP для следующей задачи (нахожусь в ОС LINUX):
запрашиваются ВСЕ файлы в ТЕКУЩЕМ каталоге, содержащие СТРОКУ, но выводятся только ИМЕНА ФАЙЛОВ, содержащие совпадение.
Спасибо!
решение1
Вы можете использовать
grep -rl stringToSearch .
или
find . -type f -exec grep -l stringToSearch {} \;
Для получения дополнительной информации о grep
других командах Unix обратитесь к руководству ( man
)
В этом случае man grep
говорится, что
-l, --files-with-matches Подавить обычный вывод; вместо этого вывести имя каждого входного файла, из которого вывод обычно печатался бы.
Сканирование остановится на первом совпадении.
Очевидно, что если ваша строка содержит специальные символы или пробелы, вам необходимо (по порядку) экранировать их и/или заключить строку в кавычки.
решение2
«Grep -l» выдаст вам список имен файлов.
> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list
> grep "hello" test_file*list
test_file1.list:hello
test_file2.list:hello2..
> grep -l "hello" test_file*list
test_file1.list
test_file2.list