Поиск Linux в файлах и подкаталогах

Jun 14 12:46:00 mybox sshd[25761]: Server listening on :: port 5522.
Jun 14 12:46:00 mybox sshd[25761]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.

Я думаю, что любой сценарий запускает Ваш sshd сбой состоит в том, чтобы обнаружить что процесс это выполнение и перезапуск его неоднократно.

1
задан 25 November 2009 в 14:51
6 ответов

grep может сделать это самостоятельно:

grep -rn --include='*.php' "pattern" .
6
ответ дан 3 December 2019 в 16:41
  • 1
    это перечисляет имя файла, и текст в файле является там способом исключить текст в файле в списке.. как в я просто хочу список файлов? –  Derek Organ 25 November 2009 в 18:53
  • 2
    Можно использовать-l, но он подавит номер строки также. Это может однако быть сохранено с помощью сокращения: grep-rn - включают =' *.php' " pattern". | сокращает-d:-f1-2 –  Mikael S 25 November 2009 в 19:47

Я думаю, что следующее сделает поиск и заменит, но удостоверится, что Вы тестируете это сначала потому что я haven't:-),

find . -type f -name '*.php' -print0 | xargs -0 sed -i '.bak' -e 's/foo/bar/g'

Это создаст резервную копию каждого файла, прежде чем он отредактирует его, создают filename.php.bak файлы, и он собирается обновить метки времени на всех файлах. Это заменяет 'нечто' 'панелью'. Это также должно быть безопасно для имен файлов с пробелами в нем.

0
ответ дан 3 December 2019 в 16:41

найти. - называют '*.php'-print0 | xargs-0 grep-n "шаблон"

1
ответ дан 3 December 2019 в 16:41
  • 1
    да это перечисляет файл и строку в файле. очень полезный, но существует ли способ заменить строку чем-то, если найдено? –  Derek Organ 25 November 2009 в 14:52

find . -name '*.php' |xargs -I{} perl -i.bak -pe 's/pattern/replacement/' {}

Это делает находку каждого php файла. Xargs затем выполняет команду для каждого входа на STDIN передача значения как {}. Затем чтения Perl в файле, переименовывает его с .bak расширение, и выполняет выражение Perl на каждой строке в файле.

0
ответ дан 3 December 2019 в 16:41

Разве это не сделает для замены шаблона?

найти. - имя "*.php" - должностное лицо sed-i" .bak" 's/pattern/replace/g' {} \;

Очень опасный, хотя! Удостоверьтесь, что Вы сохраняете шаблон уникальным.:-)

0
ответ дан 3 December 2019 в 16:41

Используйте ack, лучше, чем grep.

Преимущества (для большего видят Лучшие 10 оснований для использования ack вместо grep):

  • Поиски рекурсивно по умолчанию
  • Может распознать, что наборы общих файлов (-php) ищут только php файлы, например,
  • Стиль Perl поддержек regexs, так как это - на самом деле чистый Perl.
  • Окрашенный по умолчанию

Для заменяющих операций Вы могли бы использовать ack в сочетании с жемчугом или sed.

0
ответ дан 3 December 2019 в 16:41

Теги

Похожие вопросы