find

Buscando archivos

Busca “prueba.txt” en /mnt y los subdirectorios que tenga. Se puede usar comodinespara el nombre de fichero

find /mnt -name prueba.txt

Buscar archivos “core” con más de 2 Mb:

find ~/ -name core -size +2048k

Cambiar permisos de ficheros y directorios:

find ~/public_html -type d -exec chmod 711 {} \;
find ~/public_html -type f -exec chmod 644 {} \;

Buscar los archivos ”.bak” en el directorio actual(incluyendo subdirectorios):

for i in $(find . -name "*.bak"); do rm $i; echo "buscando ..."; done
El comando encerrado entre $(…) será ejecutado previo al for ya que su resultado será utilizado como entrada de éste último.

El mismo objetivo pero aprovechando la potencia del comando find:

find /directorio -iname *.bak -exec rm {} \;
El último ; debe estar escapeado( \; pues formará parte del comando a ser ejecutado por -exec y no como cierre del find. {} será reemplazado por el nombre de cada uno de los archivos encontrados.
find . -name '*.config' -mtime 1 -print -cpio /dev/rmt1

Busca la estructura de directorio completo empezando por el directorio actual por archivos que su nombre terminan en .config que fueron modificados hace un día. La opción -name la cual es una expresión de búsqueda iguala archivos con nombres que terminan en .config y opción -mtime es otra expresión de búsqueda que iguala archivos que fueron modificados un día atrás. La expresión de accion -print imprime el nombre del archivo a pantalla y la expresión de accion -cpio escribe los archivos al dispositivo de cintas /dev/rmt1. Las expresiones de búsqueda y accion más usadas se muestran más adelante.

Buscar texto

find . -type f -exec grep "texto" {} /dev/null \;

Si bien es posible realizar búsquedas usando find como pueden ver, no es recomendable hacerlo, ya que se debería utilizar el comando grep directamente:

grep -r "texto" *

Pueden probar también rgrep, zgrep, fgrep y egrep que son variaciones del comando grep pero con parámetros ya preestablecidos.

Búsquedas avanzadas

Buscar en todo el directorio home incluyendo todos los subdirectorios por un archivo de nombre perdido.txt e imprime la ruta a al archivo en la pantalla.

$ find ~ -name 'perdido.txt' -print
El tilde o como se llame ~ especifica su directorio home.

Empezando por el directorio home, recursivamente busca en todos los archivos cuyos sus nombres terminan en extensión .cpp e imprima el resultado a la pantalla.</note>

$ find ~ -name '*.cpp' -print 

Busque todos los archivos empezando desde el directorio actual que su nombre empieza con carta y tiene un carácter más.

$ find . -name 'carta?' -print

Esta sentencia encontraría archivos nombrados carta1, cartad y cartas, pero no a carta o carta12.

El punto . especifica el directorio actual.

Busque todos los archivos empezando con el directorio actual que su nombre empieza con una letra mayúscula y termina con un número.

$ find . -name '[A-Z]*[0-9]' -print

Busque todos los archivos empezando con el directorio /usr/local/install de nombre readme o Readme:

$ find /usr/local/install -name '[R,r]eadme' -print

Esto también se puede lograr con la expresión compuesta.

$ find /usr/local/install \( -name 'readme' -o -name 'Readme' \) -print

Busqueda de archivos usando permisos relativos:

$ find ~ -perm /g=rw, o=r -type f

Referencias: http://www.scribd.com/doc/37791/GNULinux-Basicamente?page=54

tutoriales/find.txt · Última modificación: 2008/05/21 19:19 por gboksar
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki