Мне нужен синтаксис GREP для следующей задачи (я нахожусь в ОС Linux):
запрашивает ВСЕ файлы в каталоге CURRENT, которые содержат STRING, но только перечисляют FILENAMES, которые содержат совпадение.
Спасибо!
Ты можешь использовать
grep -rl stringToSearch .
или же
find . -type f -exec grep -l stringToSearch {} \;
Для получения дополнительной информации о grep
и других командах unix, пожалуйста, обратитесь к руководству ( man
)
В этом случае man grep
говорит, что
-l, --files-with-match Подавить нормальный вывод; вместо этого напечатайте имя каждого входного файла, из которого обычно выводился бы вывод.
Сканирование остановится при первом совпадении.
Очевидно, что в качестве команды bash, если ваша строка содержит специальные символы или пробелы, вы должны (по порядку) экранировать их и / или окружить вашу строку квотами
«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