2015-03-03 3 views
1

Как я могу использовать ls (или другие команды) и grep вместе для поиска из определенных файлов для определенного слова внутри этого файла?Unix - Использование ls с grep

Пример У меня есть файл - 201503003_315_file.txt, и у меня есть другие файлы в моем каталоге. Я только хочу искать файлы, у которых есть имя файла, которое содержит _315_ и внутри этого файла искать слово «ОБРАЗЕЦ».

Надеюсь, что это ясно и заблаговременно за помощь.

ответ

2

Вы можете сделать:

ls * _315_* | xargs grep "SAMPLE" 

Первая часть: ls * _315_* перечислю только те файлы, которые имеют как часть имени файла, этот список файлов конвейеру к Grep, который будет сканировать каждый из них и искать "SAMPLE"

UPDATE

немного проще (и на самом деле са фер подход) был упомянут Давид в комментариях ниже:

grep "SAMPLE" *_315_*.txt 

Причина, почему это безопаснее, что ls не обрабатывает хорошо специальные символы.

Другой вариант, как уже упоминалось Чарльз Даффи в комментариях ниже:

printf '%s\0' *_315_* | xargs -0 grep 
+0

Нет, это не будет - оно будет проверять только файлы * имена *. –

+1

Попробуйте 'grep 'SAMPLE" * _315 _ *. Txt'. –

+0

Забыл xargs - исправлено! – alfasin

-2

Изменение в этот каталог (используя cd dir) и попробовать:

grep SAMPLE *_315_* 

Если вы действительно должны использовать ls И grep попробуйте следующее:

ls *_315_* | xargs grep SAMPLE 

Первый пример, однако, требует меньше набора текста ...

+0

Копирование ответа, который был опубликован 10 минут назад ... не круто ... – alfasin

+0

Спасибо. Это тоже работает. – rgb

+0

Нет копии. Просто нужно время, чтобы отформатировать мой первый пост. И да, вас тоже ждут stackoverflow, золото-барсук. –

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