Как стать автором
Обновить

Поиск файлов по содержимому из терминала

Время на прочтение1 мин
Количество просмотров114K
Думаю, многие не раз сталкивались с такой проблемой, как необходимость найти в папке с файлами (а порой и подпапками, в которых тоже неплохо бы поискать) файл, зная кусочек его текста (ну, или догадываясь о нем). Я тоже много раз спотыкался об эту необходимость и вот, наконец, собрался и написал небольшой скрипт на bash, выполняющий эту задачу.

image



Скрипт вызывается строкой
textfind %name%
Также можно задать шаблон имени файла (вторым аргументом) и цвет, которым будут выводится имена файлов, в которых найден искомый отрывок (зеленый по умолчанию, для включения цвета нужно установить утилиту set_color, под убунтой — sudo apt-get install fish).

Вот, собственно сам скрипт:

#!/bin/bash
cmd="find -type f -print "
set_color_cmd="set_color"
if [ $2 ]; then cmd="$cmd -name \"$2\""; fi
color="green"
if [ $3 ]; then color=$3; fi

is_colored=1
hh=$(which "$set_color_cmd")
if [ $? -ne 0 ]; then is_colored=''; fi

$cmd | while read f; do
cnt=$(grep -c "$1" "$f")
if [ $cnt -gt 0 ]; then
if [ $is_colored ]; then "$set_color_cmd" "$color"; fi
echo "$f"
if [ $is_colored ]; then "$set_color_cmd" normal; fi
grep -n "$1" "$f"
fi
done



Скачать можно по ссылке: Скрипт
Теги:
Хабы:
-29
Комментарии40

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн