Назад | Перейти на главную страницу

Невозможно найти файл по содержимому

Файл содержит следующую строку

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 (я полагаю, что вы имели в виду).