mirror of
https://github.com/Direct-Dev-Ru/go-lcg.git
synced 2026-11-09 17:06:40 +00:00
added --file mode
This commit is contained in:
54
build/__lcg-out-script.sh
Executable file
54
build/__lcg-out-script.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/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"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user