Откройте все файлы, содержащие определенный текст

Я ищу терминальный путь. Откройте все файлы в /foo/bar, содержащие строку foobar. Как?

5
задан 7 February 2013 в 20:45

2 ответа

Открывает файлы, содержащие foobar по одному в vim:

for f in $(find /foo/bar -type f); do 
    if [ ! -z "$(grep foobar $f)" ]; then
        vim $f 
    fi
done
0
ответ дан 7 February 2013 в 20:45

Вы не сказали, как хотите их открывать:)

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

grep -r -l foobar /foo/bar/ | xargs vim

это также работает с Gedit; просто смени vim на gedit.

Вы также можете использовать поиск для этого, но это более сложное ИМХО:

find /foo/bar -type -f -exec grep -l foobar {} \;  | xargs vim
0
ответ дан 7 February 2013 в 20:45

Другие вопросы по тегам:

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