Pull to refresh

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

*nix
Думаю, многие не раз сталкивались с такой проблемой, как необходимость найти в папке с файлами (а порой и подпапками, в которых тоже неплохо бы поискать) файл, зная кусочек его текста (ну, или догадываясь о нем). Я тоже много раз спотыкался об эту необходимость и вот, наконец, собрался и написал небольшой скрипт на 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:findgrepпоиск файловпоиск файлов по тексту
Hubs: *nix
Total votes 57: ↑14 and ↓43 -29
Views112.2K

Comments 40

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

Стажер IT рекрутер
from 40,000 ₽IT and DigitalRemote job
Рекрутер / Recruiter (IT)
from 100,000 to 150,000 ₽ZAVOD GamesМосква
IT Recruiter
from 30,000 ₽Digital NomadsТомск
IT Recruiter
from 800 to 1,700 $Tonti Laguna MobileRemote job
Системный администратор
from 80,000 ₽Кухонный ДворЛюберцы