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

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

Время на прочтение 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
Комментарии Комментарии 40

Публикации

Истории

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн