Skip to content

Instantly share code, notes, and snippets.

@Pelirrojo
Created November 11, 2024 18:38
Show Gist options
  • Save Pelirrojo/2a04116be5f3dc605a95f14ce4c33551 to your computer and use it in GitHub Desktop.
Save Pelirrojo/2a04116be5f3dc605a95f14ce4c33551 to your computer and use it in GitHub Desktop.
Script para limpiar node_modules y ipynb_checkpoints del directorio actual e hijos
#!/bin/bash
# Nombre del script: cleanup.sh
# Descripción: Elimina recursivamente directorios .ipynb_checkpoints y node_modules
# Colores para mensajes
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Función para mostrar el uso de espacio antes de la limpieza
show_space() {
echo -e "${YELLOW}Espacio en disco antes de la limpieza:${NC}"
df -h .
}
# Función para contar y mostrar los directorios que se van a eliminar
count_directories() {
echo -e "\n${YELLOW}Directorios encontrados:${NC}"
ipynb_count=$(find . -type d -name ".ipynb_checkpoints" | wc -l)
node_count=$(find . -type d -name "node_modules" | wc -l)
echo -e "- ${GREEN}${ipynb_count}${NC} directorios .ipynb_checkpoints"
echo -e "- ${GREEN}${node_count}${NC} directorios node_modules"
total_size_ipynb=$(du -sh $(find . -type d -name ".ipynb_checkpoints") 2>/dev/null | awk '{sum += $1} END {print sum}')
total_size_node=$(du -sh $(find . -type d -name "node_modules") 2>/dev/null | awk '{sum += $1} END {print sum}')
echo -e "\nTamaño aproximado que se liberará:"
echo -e "- .ipynb_checkpoints: ${GREEN}${total_size_ipynb}${NC}"
echo -e "- node_modules: ${GREEN}${total_size_node}${NC}"
}
# Función principal de limpieza
cleanup() {
echo -e "\n${YELLOW}Iniciando limpieza...${NC}"
# Eliminar .ipynb_checkpoints
find . -type d -name ".ipynb_checkpoints" -exec rm -rf {} +
# Eliminar node_modules
find . -type d -name "node_modules" -exec rm -rf {} +
echo -e "${GREEN}¡Limpieza completada!${NC}"
}
# Función para mostrar el espacio liberado
show_space_saved() {
echo -e "\n${YELLOW}Espacio en disco después de la limpieza:${NC}"
df -h .
}
# Ejecución principal
echo -e "${YELLOW}=== Script de Limpieza ===${NC}"
echo -e "Este script eliminará todos los directorios:"
echo -e "- ${RED}.ipynb_checkpoints${NC}"
echo -e "- ${RED}node_modules${NC}"
echo -e "en todos los subdirectorios de la ruta actual."
# Preguntar confirmación
read -p "¿Desea continuar? (s/N): " response
if [[ "$response" =~ ^[Ss]$ ]]; then
show_space
count_directories
# Preguntar confirmación final
read -p "¿Confirma que desea eliminar estos directorios? (s/N): " final_response
if [[ "$final_response" =~ ^[Ss]$ ]]; then
cleanup
show_space_saved
else
echo -e "\n${YELLOW}Operación cancelada por el usuario.${NC}"
fi
else
echo -e "\n${YELLOW}Operación cancelada por el usuario.${NC}"
fi

User prompt:

¿Me podrías dar un script de bash/linux que elimine:
* todos los directorios ipynb_checkpoint 
* todos los node_modules

de los subdirectorios de la ruta actual?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment