Подтвердить что ты не робот

Как показать результат grep с полным путем или именем файла

Мне нужно знать полный путь к файлу, когда я grep.

Я использую команды типа

cat *.log | grep somethingtosearch

Теперь мне нужно показать результат с полным пути к файлу, из которого был выведен согласованный результат.

Помогите кому-нибудь?

4b9b3361

Ответ 1

Предполагая, что у вас есть два файла журнала:

  • C:/temp/my.log
  • C:/temp/alsoMy.log

cd to C: и используйте:

grep -r somethingtosearch temp/*.log

Он даст вам список вроде:

temp/my.log:somethingtosearch
temp/alsoMy.log:somethingtosearch1
temp/alsoMy.log:somethingtosearch2

Ответ 2

Вы пытались использовать флаг -l?

grep -l somethingtosearch

Это вернет только пути и имена файлов, в которых был найден поиск, а не целые строки, в которых было выполнено совпадение.

Использовать флаг -r для рекурсии.

Ответ 3

Если вы хотите увидеть полные пути, я бы рекомендовал cd в верхний каталог (вашего диска, если вы используете окна)

cd C:\
grep -r somethingtosearch C:\Users\Ozzesh\temp

Или в Linux:

cd /
grep -r somethingtosearch ~/temp

если вы действительно сопротивляетесь фильтрации файлов (*.log) И вы хотите recursive (файлы не все находятся в одном каталоге), объединение find и grep является наиболее гибким способом:

cd /
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \;

Ответ 4

для меня
grep -b "searchsomething" *.log работал, как я хотел

Ответ 5

Самый простой способ распечатать полные пути - заменить относительный путь запуска с помощью абсолютного пути:

grep -r --include="*.sh" "pattern" ${PWD}

Ответ 6

Команда:

grep -rl --include="*.js" "searchString" ${PWD}

Возвращенный вывод:

/root/test/bas.js

Ответ 7

Использование:

grep somethingtosearch *.log

и имена файлов будут распечатаны вместе с совпадениями.