Мне нужно знать полный путь к файлу, когда я grep
.
Я использую команды типа
cat *.log | grep somethingtosearch
Теперь мне нужно показать результат с полным пути к файлу, из которого был выведен согласованный результат.
Помогите кому-нибудь?
Мне нужно знать полный путь к файлу, когда я grep
.
Я использую команды типа
cat *.log | grep somethingtosearch
Теперь мне нужно показать результат с полным пути к файлу, из которого был выведен согласованный результат.
Помогите кому-нибудь?
Предполагая, что у вас есть два файла журнала:
cd to C: и используйте:
grep -r somethingtosearch temp/*.log
Он даст вам список вроде:
temp/my.log:somethingtosearch
temp/alsoMy.log:somethingtosearch1
temp/alsoMy.log:somethingtosearch2
Вы пытались использовать флаг -l
?
grep -l somethingtosearch
Это вернет только пути и имена файлов, в которых был найден поиск, а не целые строки, в которых было выполнено совпадение.
Использовать флаг -r
для рекурсии.
Если вы хотите увидеть полные пути, я бы рекомендовал 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 '{}' \;
для меня
grep -b "searchsomething" *.log
работал, как я хотел
Самый простой способ распечатать полные пути - заменить относительный путь запуска с помощью абсолютного пути:
grep -r --include="*.sh" "pattern" ${PWD}
Команда:
grep -rl --include="*.js" "searchString" ${PWD}
Возвращенный вывод:
/root/test/bas.js
Использование:
grep somethingtosearch *.log
и имена файлов будут распечатаны вместе с совпадениями.