2

Возможный дубликат:
Как совместить поиск и grep для сложного поиска? (GNU / Linux, найти, grep)

У меня есть иерархия каталогов файлов (некоторые из которых являются открытым текстом, а другие - двоичными).

Существует ли простой способ рекурсивного поиска в иерархии файлов и каталогов по именам любых файлов, содержащих указанную строку, и распечатку списка "пути к имени файла и номеру строки", если это возможно?

По сути, то, что я хочу, более или менее совпадает со следующим, за исключением, возможно, возможности печати номеров строк:

#!/bin/bash
#
# Recursively search files for pattern specified as argument.
#

pattern="$1"

if [ -z "$pattern" ]; then echo "$0: Unspecified pattern."; exit; fi

searchfiles () {

  for filename in *; do

    if [ -f "$filename" ]; then {

      result=`/bin/grep -e "$pattern" "$filename"`

      if ! [ -z "$result" ]; then echo "File: `pwd`/$filename"; fi

    }

    elif [ -d "$filename" ]; then

      cd "$filename"

      searchfiles

      cd ..

    fi

  done

}

searchfiles

Хорошо, как предложено ниже, я мог бы использовать рекурсивный grep, но мне нужно только имя файла и номер строки, так как печать его содержимого может быть грязной, если есть много длинных длинных строк, которые затем оборачиваются вокруг терминала при печати, так что вот мое решение :

grep -Rn index.php * | sed -e 's/ .*//g'

С Уважением,

Джон Гош

1 ответ1

4
grep -Rn "your_string" *

Должен сделать свое дело.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .