EDIT: shred no sirve para sobreescribir en discos sólidos y le quita vida útil.
Se dice que “si tienes que hacerlo tres veces, hazle un script”. Pues bien, en mi caso cada tanto hago respaldos de varias cosas de la PC y el teléfono, pero borrar las copias innecesarias o antiguas se vuelve pesado; son varias y siempre lo hago con borrado seguro, porque #paranóico. Asi que escribí esto:
#!/usr/bin/env bash
# BORRADO SEGURO DE BACKUP
# Pide ruta con autocompletado y asignación a una variable.
read -r -e -p "Ingresa la ruta del fichero que quieres borrar: " ruta_dir
# Normalizar escapes de Readline (\ ) creados por autocompletado.
eval ruta_dir="$ruta_dir" # TRAMPA: me lo dijo la IA.
# 1ra validación: input no vacío y existe el directorio.
if [ -z "$ruta_dir" ] || [ ! -d "$ruta_dir" ]; then
echo "La ruta no es válida"
exit 1
fi
# Muestra todo lo que se sobreescribirá.
printf "\n¡CUIDADO! ESTÁS A PUNTO DE BORRAR PERMANENTEMENTE:\n"
tree "$ruta_dir"
echo ""
# 2da validación: confirmar que se borre todo.
read -r -p "Seguro que quieres borrar todo eso? (s/n): " confirmacion
if [[ "$confirmacion" != [sSyY]* ]]; then
echo "Operación cancelada."
exit
fi
#La regex * en "shred -z -u *" se expande en el directorio actual, hay que moverse al deseado.
cd "$ruta_dir" || exit
# Borrado seguro:
# 1. Sobrescribir ficheros.
find "$ruta_dir" -type f -exec shred -z -u {} \; # TRAMPA: me lo dijo la IA.
# 2. Borrar directorios vacíos (recurisvo).
find "$ruta_dir" -depth -type d -empty -delete # TRAMPA: me lo dijo la IA.
# Aviso de éxito.
printf "\nFicheros borrados con éxito. Todo listo, mi rey.\n"
Traté de seguir los consejos que me dieron en otro tema como el de la robustez y seguridad, los comentarios breves y procurar que los bloques no contengan iteraciones anidadas.
De todas formas, aunque me sabe mal, debo confesar que la IA me ayudó en algunas cosas. Concretamente, con las flags -r y -e de read (por lo que sea no tengo el manual de ese comando). También con la línea de eval y las dos de find. Ni por asomo sabía de la primera y de las segundas no sabía que se podía hacer eso
, se suponía que ese comando solo busca ficheros.
En fin, solo quería compartirlo.