Seleccionar página

En ocasiones se hace engorroso ir buscando archivos del mismo tipo con objeto de eliminarlos de modo manual uno a uno. A pesar de que los comodines son muy útiles, es posible que requieras la eliminación de archivos por nombre localizados en cualquier punto del árbol de directorios.

Os voy a explicar, de modo sencillo, cómo usar el comando «find» de linux para localizar y borrar los archivos con un sólo comando. Es muy útil para tareas de limpieza e interesante si usáis una «live» para acceder, por ejemplo, a sistemas con Windows sin arrancar el sistema operativo nativo del equipo.

Encontrar y borrar

La sintáxis básica del comando «find» es:

find directorio criterio acción
  1. Directorio.- define la ubicación desde la que se quiere empezar la búsqueda. Por ejemplo: /home/
  2. Criterio.- se usa para seleccionar los archivos. Se pueden usar comodines. Por ejemplo: *.tmp
  3. Acción.- se especifica aquí qué debe hacer el comando con los archivos que cumplan con el criterio indicado.

Para eliminar múltiples archivos del tipo que queramos:

 find . -name "archivo" -exec rm -rf {} \;

o

 find . -type f -name "archivo" -exec rm -rf {} \;

La diferencia entre ambos comandos indicados arriba es que el primero localiza y borra archivos y directorios, y el segundo sólo archivos:

  1. -name «archivo».- se indica aquí qué estamos buscando. Se pueden usar comodines.
  2. -exec rm -rf.- Ejecuta el comando indicado a continuación, es decir, tras el «-exec» insertamos el comando que se ejecutará con cada archivo encontrado. En este caso es «rm» con el modificador «-rf», que significa borrar de forma recursiva sin preguntar.
  3. -type f: Permite filtrar para incluir sólo f(icheros) o d(irectorios).

Ejemplos:

Ojo, si ejecutas estos comandos como superusuario, corres el riesgo de eliminar algún archivo o directorio necesario para el buen funcionamiento del sistema.

Buscar y borrar todos los archivos con extensión *.bak en el directorio en el que estás:

find . -type f -name "*.bak" -exec rm -f {} \; 

Buscar todos los nombres de archivo que contengan la palabra «core» desde la raíz y eliminarlos:

find / -name core -exec  rm -f {} \;

Buscar y eliminar los archivos *.bak desde el directorio actual pero pidiendo confirmación por cada archivo encontrado:

find . -type f -name "*.bak" -exec rm -i {} \; 

Si quieres saber más:

nixCraft

nixCraft parte 2

Las páginas «man» de «find» y «rm», con «man find» y «man rm».