BASH_SRV Telegram 92
📌 Рекурсивная массовая замена текста во всех файлах 🔍✏️

Иногда нужно за пару секунд заменить одну строку или слово сразу во множестве файлов в каталоге и его поддиректориях.


#!/usr/bin/env bash
# автор: https://www.tgoop.com/bash_srv

# Проверка аргументов
if [ "$#" -ne 3 ]; then
echo "Использование: $0 <старый_текст> <новый_текст> <путь_к_директории>"
exit 1
fi

OLD="$1"
NEW="$2"
DIR="$3"
EXT="*" # можно указать, например, "*.conf" или "*.txt"

# Находим файлы и делаем замену с созданием резервных .bak-файлов
find "$DIR" -type f -name "$EXT" -print0 \
| xargs -0 sed -i.bak "s/${OLD}/${NEW}/g"

# Удаляем .bak, если они больше не нужны
# find "$DIR" -type f -name "*.bak" -delete

echo "Заменено '$OLD' на '$NEW' во всех файлах под '$DIR'."


🔧 Как использовать

1. Сохраните скрипт, например, как /usr/local/bin/bulk-replace.sh
2. Дайте права на исполнение:


chmod +x /usr/local/bin/bulk-replace.sh

3. Запустите, указав искомую строку, замену и каталог:


/usr/local/bin/bulk-replace.sh "foo" "bar" /etc/myapp


💡 Советы и примочки

🟢 По умолчанию скрипт обрабатывает все файлы (EXT="*"). Для конкретных типов (конфиги, скрипты) замените на "*.conf" или "*.sh".
🟢Флаг -i.bak создаёт резервную копию каждого файла с расширением .bak. Если вы уверены, что бэкапы не нужны, после замены раскомментируйте строку удаления.
🟢При сложных шаблонах (точки, слэши) вместо прямых слэшей s/old/new/g можно использовать другой разделитель, например s|old|new|g.
🟢Для чувствительных к регистру замен добавьте флаг I (GNU sed`): `s/${OLD}/${NEW}/gI.
🟢Если нужно увидеть, в каких файлах были изменения, перед sed вставьте -exec grep -l "${OLD}" {} \; или используйте grep -R --include="$EXT" "${OLD}" "$DIR".

👉@bash_srv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71



tgoop.com/bash_srv/92
Create:
Last Update:

📌 Рекурсивная массовая замена текста во всех файлах 🔍✏️

Иногда нужно за пару секунд заменить одну строку или слово сразу во множестве файлов в каталоге и его поддиректориях.


#!/usr/bin/env bash
# автор: https://www.tgoop.com/bash_srv

# Проверка аргументов
if [ "$#" -ne 3 ]; then
echo "Использование: $0 <старый_текст> <новый_текст> <путь_к_директории>"
exit 1
fi

OLD="$1"
NEW="$2"
DIR="$3"
EXT="*" # можно указать, например, "*.conf" или "*.txt"

# Находим файлы и делаем замену с созданием резервных .bak-файлов
find "$DIR" -type f -name "$EXT" -print0 \
| xargs -0 sed -i.bak "s/${OLD}/${NEW}/g"

# Удаляем .bak, если они больше не нужны
# find "$DIR" -type f -name "*.bak" -delete

echo "Заменено '$OLD' на '$NEW' во всех файлах под '$DIR'."


🔧 Как использовать

1. Сохраните скрипт, например, как /usr/local/bin/bulk-replace.sh
2. Дайте права на исполнение:


chmod +x /usr/local/bin/bulk-replace.sh

3. Запустите, указав искомую строку, замену и каталог:


/usr/local/bin/bulk-replace.sh "foo" "bar" /etc/myapp


💡 Советы и примочки

🟢 По умолчанию скрипт обрабатывает все файлы (EXT="*"). Для конкретных типов (конфиги, скрипты) замените на "*.conf" или "*.sh".
🟢Флаг -i.bak создаёт резервную копию каждого файла с расширением .bak. Если вы уверены, что бэкапы не нужны, после замены раскомментируйте строку удаления.
🟢При сложных шаблонах (точки, слэши) вместо прямых слэшей s/old/new/g можно использовать другой разделитель, например s|old|new|g.
🟢Для чувствительных к регистру замен добавьте флаг I (GNU sed`): `s/${OLD}/${NEW}/gI.
🟢Если нужно увидеть, в каких файлах были изменения, перед sed вставьте -exec grep -l "${OLD}" {} \; или используйте grep -R --include="$EXT" "${OLD}" "$DIR".

👉@bash_srv

BY Bash Советы




Share with your friend now:
tgoop.com/bash_srv/92

View MORE
Open in Telegram


Telegram News

Date: |

Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment. Activate up to 20 bots Hui said the time period and nature of some offences “overlapped” and thus their prison terms could be served concurrently. The judge ordered Ng to be jailed for a total of six years and six months. To edit your name or bio, click the Menu icon and select “Manage Channel.”
from us


Telegram Bash Советы
FROM American