Pull to refresh

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

Reading time 1 min
Views 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



Скачать можно по ссылке: Скрипт
Tags:
Hubs:
-29
Comments 40
Comments Comments 40

Articles