Страница 1 из 1
Найти и заменить
Добавлено: 04 авг 2024, 19:29
ya
Код: Выделить всё
#!/bin/bash
find /путь/где/искать -type f -name '*.torrent' -print0 | xargs --null perl -pi -e 's/что ищем/чем заменяем/'
sed -i 's/что ищем/чем заменяем/' /путь/где/искать/*.torrent
Re: Найти и заменить
Добавлено: 02 апр 2025, 08:15
ya
Для поиска определённой строки или текста в нескольких файлах
https://wiki.merionet.ru/articles/rukovodstvo-po-komande-grep-v-linux по ссылке рассмотрены регулярные выражения
Чтобы искать только в файлах с определённым расширением (например, .txt или .log), вы можете использовать --include:
Код: Выделить всё
grep -r --include="*.txt" "ваш_текст" /path/to/directory
Чтобы сделать поиск нечувствительным к регистру, добавьте флаг -i
Чтобы выводить номера строк, на которых найден текст, воспользуйтесь -n
Если вам нужно только имена файлов, в которых найден указанный текст, используйте -l
поиск по нескольким строкам
Re: Найти и заменить
Добавлено: 02 апр 2025, 20:16
ya
Код: Выделить всё
find /путь/где/ищем -name "*искомый фрагмент имени файла или каталога*"
Re: Найти и заменить
Добавлено: 21 май 2025, 20:54
ya
search_replace_lib.sh
Код: Выделить всё
#!/bin/bash
# Функция для поиска и замены
# Аргументы:
# $1 - строка поиска
# $2 - строка замены (может быть пустой)
# $3 - расширения файлов через запятую (например: php,json)
search_and_replace() {
local search_string="$1"
local replacement="$2"
local extensions="$3"
# Преобразуем расширения в формат, пригодный для find
IFS=',' read -ra ext_array <<< "$extensions"
# Формируем условие поиска по расширениям
local name_conditions=()
for ext in "${ext_array[@]}"; do
name_conditions+=("-name" "*.${ext}")
done
# Ищем файлы с заданными расширениями
find . -type f \( "${name_conditions[@]}" \) -print0 | while IFS= read -r -d '' file; do
# Ищем первую строку с содержимым
line_info=$(grep -n -m 1 -F "$search_string" "$file")
if [ -n "$line_info" ]; then
line_number=$(echo "$line_info" | cut -d: -f1)
line_content=$(echo "$line_info" | cut -d: -f2-)
if [ -n "$replacement" ]; then
# Замена в файле
sed -i "${line_number}s/$search_string/$replacement/" "$file"
echo "Заменено в файле: $file, строка: $line_number"
else
# Вывод информации
echo "Файл: $file, строка номер $line_number: $line_content"
fi
fi
done
}
# Пример вызова функции:
# search_and_replace "искомая строка" "замена" "php,json"
# Для поиска и замены
search_and_replace "строка поиска" "строка замены" "php,json"
# Для поиска только информации (без замены)
search_and_replace "строка поиска" "" "php,json"
Подключение в качестве библиотеки
Код: Выделить всё
#!/bin/bash
# Подключение библиотеки
source /путь/к/search_replace_lib.sh
# Использование функции
search_and_replace "строка поиска" "строка замены" "php,json"
или, если скрипт находится в текущей директории