LINUX.ORG.RU

FIND+GREP

 , ,


0

1

Всем привет

Есть команда:

find ./ -name ‘*.txt’ -exec grep -f 250.txt -A2 -B2 -H {} ; > result.txt

В файле 250.txt находится списком 250 сайтов: site1.com site2.com site3.com …

Как сделать вывод результатов поиска не в result.txt а в отдельный файл по каждому сайту? к примеру: result_site1.com.txt result_site2.com.txt result_site3.com.txt

Подскажите, пожалуйста.


Проходиться не find’ом, а циклом, и работать с каждым сайтом отдельно. Да, будет медленнее (может даже на поряд{ок,ки}), зато как ты хочешь.

for i in $(cat 250.txt); do
  find ... -exec grep ... > "${i}.txt"
done

В этом случае ключ -f для grep не нужен.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Спасибо большое за ответ

Но я чет туплю сильно

вот что пытаюсь и пишет: find: missing argument to `-exec’

for i in $(cat 250.txt); do find ./ name ‘*.txt’ -exec grep -A2 -B2 -H ${i} /; > «${i}.txt» done

edwlad
() автор топика
Ответ на: Спасибо большое за ответ от edwlad

Потому что не /; а \;, и вместо -A2 -B2 можно писать -C 2. -H тоже вам скорее всего не нужен.

${i} - тоже какая-то ерунда, ${i} {} там должно быть.

А, и find тут и не нужен, grep может сам рекурсивно обходить каталоги.

Вы пытаетесь перебором подобрать правильную команду что ли?

micronekodesu ★★★
()
Последнее исправление: micronekodesu (всего исправлений: 3)
Ответ на: комментарий от micronekodesu

Одним словом учусь :) Уже подобрал, как раз что вы написали, спасибо!

edwlad
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.