2015-03-20 4 views
0

Я пытаюсь найти текст в каталоге среди всех файлов. Ожидается, что он также получит доступ к подпапкам. Есть папки & файлы с пробельными символами в их имени. Я использую следующую команду для поиска.Поиск grep в подкаталогах

find . -type f | xargs grep -rls 'my text' 

Это не доступ к папке и файлам с пробелами. Любое предложение о том, что менять по команде?

ответ

1

Это должно обрабатывать файлы с пробелами просто отлично, я думаю (хотя и не строки), но вы можете использовать find -print0 и xargs -0 быть безопасным.

Это означает, что ваше текущее использование аргумента -r для grep бессмысленно, так как ему будут предоставлены только каталоги для работы. И дополнительно ваше использование find здесь бессмысленно, так как grep -r делает то, что вы хотите здесь напрямую.

Просто используйте grep -rls 'my text' ..

+0

Есть ли способ найти файлы для соответствия текста вместо точного текста? –

+0

Хм? Файлы, которые имеют совпадение в них, это '-l' (вместо сообщения о строках, которые соответствуют). –

0

Любая версия grep, которую я лично возложил на опоры -r, рекурсивный.

Просто передать его верхний каталог и Grep будет делать свое дело:

grep -r myregex /home/marcus/bunchoffilesindirectories 
+0

OP использует этот флаг. –

+0

@EtanReisner: Я знаю! Я просто не думаю, что это было ясно для OP. –

Смежные вопросы