Как искать слово во всем содержании каталога в Linux

Мышь, прокручивающая и лифты, будут работать, если Вы включите им в Вашем .screenrc.

Экран FAQ

Q: Моя xterm полоса прокрутки не работает с экраном.

A: Проблема состоит в том, что xterm не позволит прокручивать, если буфер дополнительного текста будет выбран. Стандартные определения termcap инициализируют возможности ti, и te переключаются на и от буфера дополнительного текста. (Полоса прокрутки также не работает, когда Вы запускаете, например, 'vi'). Можно сказать экрану не использовать эти инициализации путем добавления строки termcapinfo xterm ti @:te к ~/.screenrc файл.

Таким образом в моем .screenrc, я имею:

termcapinfo xterm* ti@:te@

В tmux это было бы что-то как (.tmux.conf):

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

15
14.12.2013, 11:08
6 ответов

xargs ожидает вход в формате, который не производит никакая другая команда, таким образом, трудно использовать эффективно. Что идет не так, как надо, вот то, что у Вас есть файл, имя которого должно быть заключено в кавычки на входе к xargs (вероятно, содержащий a ').

Если Ваш grep поддерживает -r или -R опция для рекурсивного поиска, используйте его.

grep -r word .

Иначе используйте -exec основной из find. Это - обычный способ достигнуть того же эффекта как xargs, кроме без ограничений на имена файлов. Довольно последние версии find позвольте Вам группировать несколько файлов в единственном вызове к вспомогательной команде. Передача /dev/null кому: grep гарантирует, что это покажет имя файла перед каждым соответствием, даже если это, окажется, назовут на единственном файле.

find . -type f -exec grep word /dev/null {} +

Более старые версии find (в более старых системах или OpenBSD или уменьшенных утилитах, таких как BusyBox), может только назвать вспомогательную команду на одном файле за один раз.

find . -type f -exec grep word /dev/null {} \;

Некоторые версии find и xargs имейте расширения, которые позволяют им связаться правильно, с помощью нулевых символов для разделения имен файлов так, чтобы никакое заключение в кавычки не требовалось. В эти дни только OpenBSD имеет эту функцию без наличия -exec … {} +.

find . -type f -print0 | xargs -0 grep word /dev/null
15
27.01.2020, 19:49
  • 1
    +1 специально для /dev/null. Это - неприятность, когда выходной формат может варьироваться, в зависимости от того, сколько файлов подобрано... спасибо. –  Peter.O 22.09.2011, 06:00

Я предполагаю, что Вы имеете в виду первую опцию

рекурсивный grep, для поиска содержания в файлах

grep -R "content_to_search" /path/to/directory

рекурсивный ls, для поиска файлов то соответствие

ls -lR | grep "your_search"
12
27.01.2020, 19:49
  • 1
    grep-rin для recursive-case_insensitive-show_line_number –   21.09.2011, 12:31
  • 2
    я хочу смочь искать в содержании каждого файла. –   21.09.2011, 12:34
  • 3
    первый возвращает любое возникновение в любом файле, указывая файл, где возникновение было найдено –   21.09.2011, 12:35

Если у Вас есть инструменты GNU (который Вы делаете, если тег Linux точен), затем, можно использовать -print0 и -0 обойти обычные проблемы заключения в кавычки:

find . -type f -print0 | xargs -0 grep word
2
27.01.2020, 19:49

Я думаю, что Вы хотите найти строку в файлах

Попробовать find . -name "*" | xargs grep -l "string"

-1
27.01.2020, 19:49
  • 1
    Сообщение об ошибке от xargs ("Незавершенная кавычка") означает, что OP имеет файл в. который имеет кавычку на ее имя. Ваша строка будет каркать на этом также. Как отмеченный mu, Вам нужно другое завершение. –  thiton 21.09.2011, 12:58

Там также ack, это разработано для пропуска специальных каталогов как .svn, .git и такой. Это - ежедневный инструмент для разработчиков.

Это достаточно близко к для общих переключателей.

Напр.:

ack -r string .

Пакет ack-grep на debian и debian любит.

0
27.01.2020, 19:49

В текущем каталоге можно использовать grep:

 grep -irl root .
0
27.01.2020, 19:49

Теги

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