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

как найти текстовую строку, которая может присутствовать в каком-то неизвестном файле во всей файловой системе

У меня возникла проблема, у меня в каком-то файле есть строка «что-то». В каком файле находится эта строка, которую я забыл. Во всей корневой файловой системе я хотел бы узнать, какой файл и где эта строка. Итак, как я могу это сделать. Я использовал find, но когда я использовал find, я знал имя файла, в этом случае я также не знаю имя файла. Это сервер Ubuntu 10.04. Итак, что я могу сделать, чтобы узнать, в каком файле есть эта строка.

Простое решение с использованием грубой силы:

find / -type f -exec grep -H 'some string' {} \;

(параметр -H для gnu grep заставляет его вернуть имя файла).

Однако вам, вероятно, будет полезно сэкономить время на написании более умного сценария, который игнорирует такие вещи, как двоичные файлы, исполняемые файлы (не сценарии) и т. Д.

Я всегда использую:

find / -xdev | xargs grep "string"

Это даст вам список всех совпавших строк вместе с фактическими файлами, в которых они находятся.

хех ну там много файлов

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

find / -xdev -type f -atime -X -exec grep -H 'string' {} \;

где X - количество дней с сегодняшнего дня назад, в течение которых вы уверены, что обращались к файлу

Возможно, что-то вроде "grep -iR" text to find "*", запущенное из корня, сделает это.