El shell de linux: Comando find | Algo de Linux

miércoles, 19 de marzo de 2008

El shell de linux: Comando find

Utilizamos este comando para buscar archivos dentro de una jerarquía de directorios. Pero, lo mejor de todo es que no sólo podemos buscar, sino que, además, podemos ejecutar acciones sobre los elementos localizados por el comando find.
Por otro lado, podemos realizar la búsqueda mediante varios criterios.
La sintaxis de este comando es:
find [ruta...] [expresión]
Veamos un ejemplo sencillo: Queremos buscar los archivos de imágenes con extensión .jpg en el directorio del usuario ambrosio:
$ find /home/ambrosio -name "*.jpg"

Otro ejemplo: Imaginemos que quiero listar los directorios que hay en el directorio actual:
$ find ./ -maxdepth 1 -type d

Ahora imaginemos que quiero listar los ficheros que se han modificado hoy en el directorio actual:
$ find ./ -mtime 0 -type f

Si quisieramos borrar todos los subdirectorios del directorio /var/backup que tengan una antigüedad mayor de 20 días:
$ find /var/backup -mtime +20 -type d -exec rm -f {} \;

Otro ejemplo: Queremos borrar todos los directorios del sistema que contengan la palabra sane:
# find / -name "*sane*" -type d -exec rm -fr {} \; 2>/dev/null

Si lo que queremos es borrar todos los ficheros del sistema que contengan la palabra sane, no tenemos más que cambiar el tipo en el comando anterior:
# find / -name "*sane*" -type f -exec rm -fr {} \; 2>/dev/null

Otro ejemplo: Imaginemos que queremos recopilar todos los ficheros mp3 que tenemos repartidos en diferentes directorios y moverlos a un único directorio:
# find / -name "*.mp3" -exec mv {} /compartido/musica/ \;

Imaginemos también que los usuarios de nuestro sistema descargan ficheros mp3 que almacenan en sus cuentas y terminan excediendo su cuota. Tan sólo tenemos que ejecutar el siguiente comando y borraremos todos los mp3 que haya en el home:
# find /home -name "*.mp3" -exec rm {} \;

Ahora supongamos que queremos borrar todos los archivos y directorios propiedad de un usuario del directorio tmp:
# find /tmp -user enavas -exec rm -fr {} \;

Como podéis ver, el comando find es tremendamente útil.

2 comentarios:

spin_ dijo...

estan muy buenos los comandos los probe y estan buenos... los use en la plataforma de ubuntu 7.10 y too perfecto... gracias por el apor te

Anónimo dijo...

Buenos ejemplos.