====== 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.
$ 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