нужно искать что-то во всем контенте
Я стараюсь:
find . | xargs grep word
Я получаю ошибку:
xargs: неопределенная цитата
Как этого добиться?
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
/dev/null
. Это неприятно, когда формат вывода может варьироваться, в зависимости от того, сколько файлов совпадают ... спасибо.Я думаю, вы имеете в виду первый вариант
grep recursive, для поиска содержимого внутри файлов
ls рекурсивно, для поиска файлов, которые соответствуют
источник
Если у вас есть инструменты GNU (что вы делаете, если тег Linux точен), то вы можете использовать
-print0
и-0
обойти обычные проблемы цитирования:источник
Там также ack , он предназначен для пропуска специальных каталогов, как
.svn
,.git
и тому подобное. Это ежедневный инструмент для разработчиков.Это довольно близко к grep для общих ключей.
Ex. :
Пакет
ack-grep
на Debian и Debian любит.источник
В текущем каталоге вы можете использовать grep:
источник
Я думаю, что вы хотите найти строку в файлах
Пытаться
find . -name "*" | xargs grep -l "string"
источник