Borrar basura mediante find

Copiadlo a un fichero llamado tamanominis.sh por ejemplo, dejad ese fichero en la raíz de vuestro disco de datos

El comando GNU/Linux find, uno de los más potentes, además de buscar archivos por patrones u otros criterios, permite hacer cosas con los resultados obtenidos, y si sabéis un poquito de scripting más todavía.

Hoy os voy a explicar una acción sencilla de aplicar, de las que lleva de serie este comando, pero a su vez usadla con cuidado ya que es peligrosa.

Si quisiéramos encontrar todos los archivos Thumbs.db que genera un sistema Windows para las miniaturas (no solo de imágenes, si no de cualquier tipo de archivo), podemos usar este comando:

find . -name "Thumbs.db"
Encontrar archivos de miniaturas generados por Windows

Encontrar archivos de miniaturas generados por Windows

Si lo ejecutáis en un disco de un tera de datos os podéis sorprender.

Si además tenéis curiosidad de saber lo que ocupan todos esos ficheros Thumbs.db, lo podéis averiguar con este pequeño script:

#!/bin/bash

#genero fichero temporal
find . -name "Thumbs.db" > listado-miniaturas.txt

#calculo total ficheros encontrados
totalficheros=`cat listado-miniaturas.txt|wc -l`
echo -e "\nSe encontraron: $totalficheros archivos de miniaturas"

#establezco separador en salto de linea para evitar problemas de espacios en los nombres de archivo
IFS='
'

#recorro el fichero quedandome con el tamaño de cada archivo (en bytes) y totalizando
while read a
do
    bytes=`ls -l $a|cut -f5 -d" "`
    #echo $bytes
    totalbytes=`expr $totalbytes + $bytes`
    #echo "Parcial $totalbytes"
done < listado-miniaturas.txt

#muestro totales en B, KB y MB
echo -e "\nTotal B=$totalbytes"

totalkbytes=`expr $totalbytes / 1024`
echo -e "\nTotal KB=$totalkbytes"

totalmbytes=`expr $totalkbytes / 1024`
echo -e "\nTotal MB=$totalmbytes"

#borro el fichero temporal
rm listado-miniaturas.txt

Copiadlo a un fichero llamado tamanominis.sh por ejemplo, dejad ese fichero en la raíz de vuestro disco de datos, y como seguramente será NTFS ya que lo tenéis compartido con Windows, posiblemente no podáis darle permisos de ejecución, no pasa nada, salid a la consola y ejecutarlo así:

bash tamanominis.sh
Copiadlo a un fichero llamado tamanominis.sh por ejemplo, dejad ese fichero en la raíz de vuestro disco de datos

Copiadlo a un fichero llamado tamanominis.sh por ejemplo, dejad ese fichero en la raíz de vuestro disco de datos

Una posible ejecución mostraría algo así:

bash tamamoninis.sh

Se encontraron 1478

Total B=119403664

Total KB=116605

Total MB=113

Quizá 113 MB no sea un tamaño importante dadas las capacidades actuales, pero cada archivo ocupa como mínimo el tamaño de la unidad mínima de asignación, cuyo tamaño estándar ronda los 4KiloBytes. Además, en el caso de particiones NTFS, son 1478 entradas ocupadas en la MFT, vuelve a ser una ridiculez sí, pero ahí lo dejo.

ejemplo-ejecucion-tamano-minis-thumbs

ejemplo-ejecucion-tamano-minis-thumbs

Una vez hemos ejecutado find, y hemos repasado que todo son archivos llamados Thumbs.db, no hagáis la locura de usar en este caso un patrón como “*.db” porque podríais borrar cosas importantes, como bases de datos sqllite, podemos añadirle el modificador -delete para que haga lo propio:

find . -name "Thumbs.db" -delete

Repito, comprobad, si queréis hacerlo tranquilamente podéis generar un fichero de texto (al igual que hace el script anterior) que podáis repasar tranquilamente antes de añadir la opción -delete al comando find. Por ejemplo con este comando:

find . -name "Thumbs.db" > listado-miniaturas.txt

Usamos el redirector de salida estándar (> mayor que), para que en lugar de tirar a pantalla el flujo de información la guarde en el fichero de texto. Después abrid el fichero listado-miniaturas.txt con un editor de texto y repasad antes de borrar.

abrid el fichero listado-miniaturas.txt con un editor de texto y repasad antes de borrar

abrid el fichero listado-miniaturas.txt con un editor de texto y repasad antes de borrar

NTFS y MFT

Si quieres saber más acerca de estos dos conceptos base del sistema de archivo de Microsoft, te recomiendo buscar por internet ambos acrónimos o leer este artículo:

Cómo reserva espacio el sistema de archivos NTFS para la MFT

  • El sistema de archivos NTFS contiene en su núcleo un archivo denominado tabla maestra de archivos (MFT).

  • Hay al menos una entrada en la MFT para cada archivo en un volumen NTFS, incluyendo la propia MFT.

  • NTFS utiliza las entradas de la MFT para localizar los archivos de un volumen y toda la información sobre los mismos: su tamaño, tiempo y fecha, permisos y contenido de los datos …

Espero que os sea de utilidad, saludos y hasta la próxima.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.