// DevOps
Búsqueda y reemplazo seguros: cómo no dañar los binarios
Publicado el 22.09.2026
Al trabajar con proyectos reales (cambio de CDN, migración, refactorización) a menudo es necesario reemplazar masivamente una URL por otra.
A primera vista la tarea parece trivial: sed -i 's|old|new|g' **/* — y listo.
En la práctica ese enfoque es peligroso: el patrón también coincide en archivos binarios.
Un reemplazo descuidado provoca:
- corrupción de archivos binarios (imágenes, PDF, archivos comprimidos);
- cambios innecesarios en el historial de git: los binarios se marcan como modificados;
- imposibilidad de revertir si no se hizo una copia de seguridad.
A continuación — el procedimiento para cambiar solo texto, sin tocar binarios, y creando antes una copia de seguridad puntual.
Datos iniciales
- URL antigua:
https://static-old.example-cdn.net - URL nueva:
https://cdn-new.example-storage.net - Contexto: Proyecto con contenido mixto (HTML, JS, YAML + PNG, JPG, WOFF2).
Procedimiento
1. Preparación y búsqueda (Dry Run)
La herramienta clave es grep -I (ignora archivos binarios, incluso si en ellos los bytes coinciden con la cadena).
Primero solo veremos qué vamos a cambiar:
# Buscamos recursivamente, ignoramos binarios, mostramos la lista de archivos
grep -rIl 'https://static-old.example-cdn.net' .Importante: asegúrate de que en la lista haya solo archivos de texto (no imágenes, fuentes, etc.). Si todo parece correcto — continuamos.
2. Copia de seguridad puntual
No copiamos todo el proyecto — eso es lento y ocupa espacio. Guardamos solo los archivos que contienen la cadena buscada, preservando la jerarquía y los metadatos.
SEARCH="https://static-old.example-cdn.net"
BACKUP_DIR="backup_before_replace"
mkdir -p "$BACKUP_DIR"
# Copiamos solo los archivos con coincidencias
find . -type f -print0 \
| xargs -0 grep -Il "$SEARCH" \
| xargs -I{} sh -c 'mkdir -p "$BACKUP_DIR/$(dirname "{}")" && cp -p "{}" "$BACKUP_DIR/{}"'Ahora en backup_before_replace hay una copia exacta solo de los archivos que se van a cambiar. Revertir — una simple copia de vuelta.
3. Reemplazo
sed -i funciona diferente en Linux (GNU) y macOS (BSD):
- Linux:
sed -i 's/old/new/g' - macOS:
sed -i '' 's/old/new/g'
Para que el script funcione en todas partes (local, en CI, en Mac/Linux), usamos perl — es idéntico en todos los sistemas *nix.
OLD="https://static-old.example-cdn.net"
NEW="https://cdn-new.example-storage.net"
find . -type f -not -path "./$BACKUP_DIR/*" -print0 \
| xargs -0 grep -Il "$OLD" \
| xargs -0 perl -pi -e "s|\Q$OLD\E|$NEW|g"\Q y \E escapan automáticamente todos los metacaracteres en la URL (puntos, barras, guiones) — no hace falta añadir barras invertidas manualmente.
4. Control del resultado (Verificación)
Comprobamos que todo salió bien:
# Debe devolver salida vacía
grep -rIl "$OLD" . --exclude-dir="$BACKUP_DIR"
# Debe mostrar los archivos modificados (ejemplo: primeros 5)
grep -rIl "$NEW" . --exclude-dir="$BACKUP_DIR" | head -n 5Adicionalmente puedes ejecutar git status o git diff --stat para ver los cambios reales.
Por qué es más fiable
grep -I— protección fiable contra la corrupción de binarios.- Copia de seguridad puntual — guardamos solo la delta, ahorrando espacio y tiempo.
perlen lugar desed— estabilidad multiplataforma (Linux, macOS, CI).- Variables y pasos claros — el script es legible y fácil de adaptar.
TL;DR — Fragmento listo para usar ahora mismo
Pega en el terminal y reemplaza tus URL:
SEARCH="https://static-old.example-cdn.net"
REPLACE="https://cdn-new.example-storage.net"
BACKUP="backup_$(date +%s)"
mkdir -p "$BACKUP"
# 1. Copia de seguridad puntual solo de los archivos con coincidencias
find . -type f -print0 \
| xargs -0 grep -Il "$SEARCH" \
| xargs -I{} sh -c 'mkdir -p "$BACKUP/$(dirname "{}")" && cp -p "{}" "$BACKUP/{}"'
# 2. Reemplazo seguro (perl — funciona en Linux y macOS)
find . -type f -not -path "./$BACKUP/*" -print0 \
| xargs -0 grep -Il "$SEARCH" \
| xargs -0 perl -pi -e "s|\Q$SEARCH\E|$REPLACE|g"
echo "¡Listo! La copia de seguridad se guardó en la carpeta $BACKUP"
echo "Revertir (si es necesario): cp -r $BACKUP/. ."Este enfoque es seguro y funciona igual con cualquier archivo: los cambios afectan solo al texto y los datos binarios permanecen intactos.
// Reviews
Reseñas relacionadas
Llegué con una solicitud costosa para la configuración de un servidor VPS, pero durante la consulta Mikhail propuso una solución mucho más sencilla y económica. Al final ahorré dinero y tiempo. Mikhail — un verdadero experto que trabaja por el resultado del cliente, no por la factura. ¡Lo recomiendo!
Llegué con una solicitud costosa para la configuración de un servidor VPS, pero durante la consulta Mikhail propuso una solución mucho más simple y económica. Al final ahorré presupuesto y tiempo. Mikhail es un …
Configuración de VPS, configuración del servidor
12.05.2026 · ★ 5/5
¡Excelente trabajo! Configuró el servidor muy rápido, instaló el panel y configuró la IP. ¡Sin duda lo recomiendo!
¡Excelente trabajo! Muy rápido configuró el servidor, instaló el panel y configuró la IP. ¡Sin duda lo recomiendo!
Configuración de VPS, configuración del servidor
19.04.2026 · ★ 5/5
Todo perfecto, ayudó de forma rápida y profesional, gracias, lo recomiendo a la comunidad
Todo perfecto, ayudó de forma rápida y profesional, gracias, lo recomiendo a la comunidad
Configuración de VPS, configuración del servidor
16.04.2026 · ★ 5/5
Hubo varios problemas, tanto en la parte técnica como en la comprensión general. Mijaíl respondió rápido a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos; por ello, muchas gracias. Estoy satisfecho con el resultado.
Hubo varios problemas relacionados tanto con la parte técnica como con la comprensión en general. Mijaíl respondió rápidamente a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos, por lo que le …
Configuración de VPS, configuración del servidor
18.02.2026 · ★ 5/5
Todo se hizo de manera rápida y precisa. Lo recomiendo.
Todo se hizo rápido y con precisión. Lo recomiendo.
Configuración de VPS, configuración del servidor
17.01.2026 · ★ 5/5
Todo salió bien, el profesional respondió rápidamente a las preguntas y ayudó a resolver el problema. ¡Gracias!
Todo fue bien, el profesional respondió rápidamente a las preguntas y ayudó a resolver el problema. ¡Gracias!
Configuración de VPS, configuración del servidor
16.12.2025 · ★ 5/5
// Contact
¿Necesitas ayuda?
Escríbeme y te ayudaré a resolver el problema
Respondo en un día laborable (03:00-13:00 GMT)
Или оставьте заявку здесь:
// Related