Buscar artículos en cambiatealinux.com



Eliminar ficheros en Linux recursivamente en directorios y subdirectorios

Por Alex, el 23/12/2024 · 6 min lectura   -  Comentarios: 0   -  Comentar el artículo
Este script para Linux al borrar los ficheros lo hará irrecuperables o muy complicado de recuperar donde será necesario software especial por que antes de borrarlos los codificaremos, sobreescribiremos, vaciaremos y renombraremos para hacer las cosas un poco mas dificiles.
Guardar el artículo.

Si te ha gustado y ayudado puedes compartir en redes para que el artículo sea mas visible y pueda ayudar a mas gente:




A parte este script también puede listar los ficheros que se quieren borrar antes de borrarlos o solo vaciar su contenido por si se quiere reutilizar los nombre, por ejemplo, los logs de los programadores que en local suelen crecer hasta el infinito con este script se puede recorrer en todo el disco buscando *.log y vaciarlos para seguir utilizándolos

Cada una de estas opciones realiza una de las operaciones que no interfieren en la otras, es decir, la opción 2 lista ficheros pero no los borrará ni los vaciará.

El script lo dejo en github

Funciona también en Mac y en Windows si se ejecuta desde un entono linux con el subsistema de windows para linux.


Como funciona el script

Para ejecutarse necesita que se le pase un directorio donde buscar y una extensión de fichero log, por ejemplo, sin * ni punto delante o se le pasa '*' para que lo busque todo, si, el asterisco entre comillas y si se le pasa la extensión no son necesarias las comillas.

Si no se ponen parámetros sale el mensaje de ayuda:



Al ejecutar el script correctamente:

./file-seeker.sh /path/to/dir/ log


Presenta un menú para elegir lo que queremos hacer:



Si elegimos la opción 1, por ejemplo, buscara los ficheros .log



Las opciones 2, 3 y 4 presenta un segundo mensaje para confirmar el borrado porque una vez borrado no se podrán recuperar los datos


Listar ficheros de un directorio y sus sub-directorios

Esta opción es sencilla y simple, solo hace un listado de los ficheros buscados, mostrará los ficheros puestos en el filtro y el directorio donde están, por ejemplo, si buscamos todo:




Vaciar ficheros de un directorio y sus sub-directorios

Esta opción vaciará por dentro los ficheros seleccionados por completo y los dejará en blanco, NO los borrará.

Ejecuta esta instrucción de vaciado

echo "" > /path/to/file.log


Nada mas que decir :-)


Eliminar permanente ficheros de un directorio y sus sub-directorios

Esta parte lo que hace es:

  • 1) Encriptar el contenido del fichero
  • 2) Sobre escribimos el fichero 15 veces con shred
  • 3) Renombramos 5 veces el fichero de forma random con un hash
  • 4) Sobre escribimos el fichero con un texto aleatorio
  • 5) Eliminamos el fichero del disco


echo -e "Encrypting file: ${GREEN}$item${RESET} (${GREEN}$size${RESET})"
#
# Primero encriptamos el contenido del fichero
#
if openssl enc -aes-256-cbc -salt -pbkdf2 -in "$item" -out "$item" -pass pass:"$password" 2>/dev/null; then
    echo -e "File encrypted and saved as: ${GREEN}$item${RESET}"
else
    echo -e "${RED}Error encrypting file: $item. Skipping...${RESET}"
fi

#
# Una vez codificado lo sobre escribimos con datos random con el programa shred 15 veces
# podemos poner mas veces o menos y después de se sobre escribe con ceros
#
echo -e "Overwriting original file with random data ${overwrite} times: ${GREEN}$item${RESET}"
shred -n${overwrite} -f -z "$item"  # Overwrite the file 5 times with random data and zeros

#  
# Ahora renombramos el fichero con un hash aleatorio 5 veces
#
for i in {1..5}; do
    # Generate an MD5 hash based on the current name and timestamp
    hash=$(echo "$item-$(date +%s)" | md5sum | cut -d' ' -f1)
    new_name="$(dirname "$item")/$hash"

    # Rename the file
    mv "$item" "$new_name"
    echo -e "File renamed to: ${GREEN}$new_name${RESET} number $i"

    item="$new_name"
done

# 
# Y por ultimo lo sobre escribimos con un texto y lo eliminamos del disco
#
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit" > "$new_name"
rm -f "$new_name"
echo -e "File deleted: ${RED}$new_name${RESET}"



Eliminar directorios vacíos

Y por ultimo tenemos la opción de eliminar los directorios vacíos.

Antes de borrar el directorio también lo renombrar con un hash 5 veces de forma random.

for i in {1..5}; do
            # Generate a random hash for renaming
            hash=$(echo "$dir-$(date +%s)" | md5sum | cut -d' ' -f1)
            new_name="$(dirname "$dir")/$hash"

            # Rename the directory
            mv "$dir" "$new_name"

            dir="$new_name"
 done
Y después de renombrarlo 5 veces lo borramos del disco.

NOTA: esta opción no esta del todo optimizada y para eliminar completamente todos los subdirectorios hay que pasar varias veces esta opción hasta que se elimina el directorio por completo.


Conclusión

Poca cosa decir en la conclusión solo que con este script podéis eliminar de forma muy segura ficheros y directorios.
Podéis modificarlo al gusto.

Y esto es todo !!!
Gracias por seguirme y leerme, espero que les haya ayudado
Saludos
Alex
:-)
/



Si te ha gustado y ayudado puedes compartir en redes para que el artículo sea mas visible y pueda ayudar a mas gente:




Publicidad



Artículos relacionados:

Calcular el tiempo que tarda en ejecutarse un script
2025/06/12 · 2 min lectura

Calcular el tiempo que tarda en ejecutarse un script

Como desinstalar Virtualbox para instalar otra versión
2025/04/06 · 2 min lectura

Como desinstalar Virtualbox para instalar otra versión

tree - ver el árbol de directorios y ficheros
2024/11/04 · 2 min lectura

tree - ver el árbol de directorios y ficheros

alias - crea un alias a un comando o a una sentencia
2024/11/04 · 2 min lectura

alias - crea un alias a un comando o a una sentencia

Procesos zombie, como encontrarlos
2024/04/19 · 1 min lectura

Procesos zombie, como encontrarlos


Añadir un comentarios:


  • Comenta el artículo si te ha sido de utilidad y te ha funcionado para que pueda ayudar a mas personas.
  • Si no ha funcionado comentalo tambien asi yo puedo repasarlo e intentar ver porque no funciona.

En ambos casos tú opinión es valiosa y de mucha utilidad para mejorar el blog y ayudar a otros usuarios.



(no se publica el email)


Los comentarios no se publican al momento sino que son revisados para prevenir el spam.

Todavía no hay comentarios.
Archivo:


2025 10 2024 22 2023 34 2022 87 2021 87 2020 83 2019 38 2018 37 2017 85 2016 138 2015 49 2014 5 2013 9 2012 7 2010 1