Файл содержит следующую строку
google.friendconnect
Я получил строку из следующей команды
cat * | grep google
Однако мне неизвестно его местонахождение.
Как узнать точное местоположение файла без Ack?
Для общего класса проблемы, которую вы описываете, чтобы найти файл, который вы можете запустить
grep -r 'google.friendconnect' /
Где «/» - путь к каталогу, который вы хотите найти. Это будет рекурсивно искать эту строку во всех файлах в этом дереве каталогов. Представленная конкретная команда займет некоторое время и вызовет множество ошибок типа «Permission Denied», если вы не запустите ее как root. Поскольку это будут домашние каталоги search, var, sys и других пользователей. Еще один полезный параметр grep, который вам, вероятно, тоже нужен, - «-n». Это также распечатает номер строки файла, который соответствует. Такие как,
grep -n 'google.friendconnect' *
testfile:3:google.friendconnect
Я обнаружил, что в 90% случаев я использую параметры «irn» для grep: нечувствительность к регистру, рекурсивность и номера строк печати.
Попробуйте -H
флаг для grep
. Также не используйте cat
там, пожалуйста. В этом нет необходимости.
grep -H google *
Чтобы уточнить, -H
флаг сил grep
для печати имени файла. Поразмыслив, я вспомнил, что флаг -H используется по умолчанию при поиске более чем в одном файле. Так что в данном случае это избыточно. Ответ Энди действительно проще и правильнее.
grep google *
(вместо использования cat дайте grep список имен файлов, и он будет печатать имена файлов, соответствующих при печати строк)
Оптимальный способ поиска строки во всех файлах в каталоге для печати совпадающих файлов с номерами строк в совпадающей строке будет выглядеть следующим образом из базового каталога.
grep -Hn <string_of_interest> `find . -type f`
Это без использования AWK (я полагаю, что вы имели в виду).