Это было осуществление из одного учебника Linux: дать примеру оба перенаправленные ввода и вывода. Я нашел ответ в сети:
grep \$Id < *.c > id_list
Но этот *.c, кажется, проблема. Это может ответить работаться вокруг?
Не возможно перенаправить больше, чем одного файла для ввода использования <
. (или даже вывод, для вывода необходимо использовать tee
).
Для демонстрации рабочего примера можно использовать что-то как: grep \$Id < 1.c > id_list
.
Можно также использовать "здесь строку", тип перенаправления для получения Вас хочет.
grep <<< $(cat *.c) > out
Так как grep может читать из файлов, имена которых передаются ему как аргументы, Вам не нужно перенаправление ввода вообще здесь:
grep '$Id' -- *.c > id_list
По умолчанию, если *.c
расширяется до списка больше чем одного файла, затем grep
снабдит префиксом каждый вывод соответствия имя файла, в котором это было найдено; если Вы не хотите это, добавьте -h
(или --no-filename
) переключатель.
Для рекурсивного поиска можно использовать --include
опция
grep -r --include='*.c' '$Id' . > id_list