Los scripts Bash que te harán ganar 5 horas semanales (y cómo crearlos en 10 minutos)
El 78% de los profesionales dedican al menos 5 horas semanales a tareas repetitivas en la terminal. Copiar archivos entre carpetas, renombrar lotes de documentos o extraer datos de logs son procesos que podrían automatizarse con scripts Bash en menos de 10 líneas de código. Si aún usas comandos individualmente para estas acciones, estás quemando minutos valiosos que podrían dedicarse a análisis estratégicos o formación. Aquí tienes 4 scripts listos para implementar hoy mismo y un método para personalizarlos en minutos.
1. Renombrar archivos con patrón fijo (evita errores en subidas masivas)
¿Cuántas veces has recibido una carpeta con nombres como informe_final_v2 (1).pdf y debes renombrarlo a informe_clientX_2024.pdf? Este script añade prefijo y fecha automáticamente:
#!/bin/bash
# Script: renombrar_fecha.sh
# Uso: ./renombrar_fecha.sh prefijo
# Ejemplo: ./renombrar_fecha.sh informe_clientX
PREF=$1
FECHA=$(date +"%Y%m%d")
for file in *.pdf; do
nuevo_nombre="${PREF}_${FECHA}_${file}"
mv "$file" "$nuevo_nombre"
done
echo "Renombrados $(ls | wc -l) archivos"
Prueba en directo:
- Guarda el código en un archivo llamado
renombrar_fecha.sh. - Dale permisos:
chmod +x renombrar_fecha.sh. - Ejecuta:
./renombrar_fecha.sh informe_WEB.
Resultado: Todos los *.pdf en la carpeta pasan a tener formato informe_WEB_20240515_nombre.pdf.
2. Copiar los últimos 10 logs de 5 servidores (sin conectarte manualmente)
Si trabajas con entornos distribuidos, descargar logs de múltiples máquinas es tedioso. Este script usa scp para traer solo los últimos 10 archivos modificados de cada servidor:
#!/bin/bash
# Script: copiar_logs.sh
# Uso: ./copiar_logs.sh [usuario@]servidor1 [usuario@]servidor2 ...
SERVERS=("$@")
FECHA=$(date +"%Y%m%d")
for server in "${SERVERS[@]}"; do
echo "Procesando $server..."
ssh "$server" "tail -n 10 /var/log/app.log" > "${server}_logs_$FECHA.txt"
done
echo "Logs guardados en el directorio actual"
Prueba en directo:
- Guarda el código en
copiar_logs.sh. - Ejecuta:
./copiar_logs.sh admin@servidor1 admin@servidor2.
Resultado: Crea archivos como admin@servidor1_logs_20240515.txt con los últimos logs del día. Importante: Configura autenticación por clave SSH para evitar contraseñas.
3. Comprimir y mover carpetas por fecha (antes de hacer backup manual)
¿Tienes folders como proyectoA_final/ y proyectoA_v2/ que deben comprimirse antes del backup nocturno? Este script automatiza la gestión:
#!/bin/bash
# Script: limpiar_carpetas.sh
# Uso: ./limpiar_carpetas.sh [antes_de_dias]
DIAS=${1:-7} # Por defecto, borra carpetas con más de 7 días
HOY=$(date +%s)
LIMITE=$((HOY - DIAS * 86400))
for dir in */; do
ULT_MOD=$(stat -c %Y "$dir")
if [ $ULT_MOD -lt $LIMITE ]; then
tar -czf "${dir%/}.tar.gz" "$dir" && rm -r "$dir"
echo "Comprimido y borrado: $dir"
fi
done
Prueba en directo:
- Ejecuta:
./limpiar_carpetas.sh 1(elimina carpetas con más de 1 día de antigüedad).
Resultado: Todas las carpetas antiguas se comprimen en tar.gz y se eliminan. Ideal para limpiar entornos de desarrollo.
4. Extraer emails de un log y listar dominios únicos (analisis rápido de tráfico)
Si necesitas identificar qué dominios envían más peticiones en un archivo masivo de logs, este script filtra y ordena en segundos:
#!/bin/bash
# Script: extraer_dominios.sh
# Uso: ./extraer_dominios.sh archivo.log
grep -oE "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" "$1" | \
awk -F'@' '{print $2}' | sort | uniq -c | sort -nr > dominios.txt
echo "Dominios extraídos en dominios.txt. Top 5:"
head -5 dominios.txt
Prueba en directo:
- Ejecuta:
./extraer_dominios.sh access.log.
Resultado: Crea dominios.txt con una lista ordenada de dominios y su frecuencia. Útil para detectar spam o tráfico no habitual.
Cómo adaptar estos scripts a tus necesidades
- Personaliza rutas: Cambia
*.pdfpor*.csvo/var/log/por/home/tu_user/docs/. - Añade lógica: Usa bucles
foranidados para procesar múltiples extensiones o rutas. - Agenda con
cron: Ejecuta los scripts diariamente agregando una línea como:(a las 3 AM cada día).0 3 * * * /ruta/a/tu_script.sh
Regla de oro: Si un proceso te toma más de 2 minutos repetirlo, automatízalo. Los scripts Bash son la capa inicial de automatización más accesible: no requieren lenguajes complejos ni infraestructura, solo 10 minutos de prueba y validación.
Empieza con el script de renombrar archivos o copiar logs. En una semana, habrás recuperado 5 horas de trabajo manual. ¿Cuál será tu próxima tarea candidata para automatizar?