#!/usr/bin/env bash # lcg: нужен скрипт на bash который получит на вход два араметра корень поиска и поисковое выражение и проведет поиск по всем подпапкам начиная с указанной указанного поискового выражения и выведет все в файл указанный третьим параметром скрипта. поисковое выражение ищется как в именах файлов так и в контенте через grep отсекая бинарные файлы и прочее нетекстовое # обновлено: 2026-10-21 18:23:18 set -euo pipefail # Использование: # ./search.sh <корень_поиска> <выражение> <файл_результата> set -u if [[ $# -ne 3 ]]; then echo "Использование: $0 <корень_поиска> <выражение> <файл_результата>" >&2 exit 1 fi root=$1 expr=$2 output=$3 if [[ ! -d "$root" ]]; then echo "Ошибка: каталог не найден: $root" >&2 exit 1 fi root=$(realpath -m -- "$root") output=$(realpath -m -- "$output") # Создаём или очищаем файл результата : > "$output" || { echo "Ошибка: невозможно записать в $output" >&2 exit 1 } find "$root" -type f -print0 | while IFS= read -r -d '' file; do # Не искать внутри самого файла результатов [[ "$file" == "$output" ]] && continue # Поиск выражения в имени файла или полном пути if grep -E -q -- "$expr" <<< "$file"; then printf '[NAME] %s\n' "$file" >> "$output" fi # Поиск в содержимом. # -I — игнорировать бинарные файлы # -n — номер строки # -H — имя файла grep -I -nH -F -- "$expr" "$file" >> "$output" 2>/dev/null || true done echo "Результаты записаны в: $output"