Cómo utilizar el comando find en linux
Vídeo: Linux :: comando find
La interfaz de línea de comandos de Linux es un muy potente y flexible. Lo que lo hace también lo son la colección de herramientas que forman parte de ella. Las herramientas como grep, awk, encontrar, localizar, y así sucesivamente, hacer su vida mucho más fácil cuando se tiene que encontrar los archivos, buscar un texto en un archivo o sustituir una palabra por otra. Veamos el encontrar mando y ver cómo se puede utilizar para mejorar su proceso de búsqueda de línea de comandos.
En su forma más simple, el comando find se utilizaría como esto
# encontrar .
.helloworld.txt
.image01.jpg
.image02.jpg
.image03.jpg
Este comando le dará una lista de todos los archivos y carpetas en el directorio actual. Ten en cuenta que mostrará todos los archivos contenidos en las subcarpetas, así, por lo que la lista podría ser muy larga. Golpear la combinación de teclas Control + C para detener la visualización de más archivos.
Este es el uso más simple del comando find. Usando una combinación de algunos de los parámetros del comando y expresiones regulares que puede realizar la búsqueda de archivos mucho más inteligentes. Por ejemplo, si desea buscar todos los archivos cuyo nombre empieza con imagen ejecute el siguiente comando en base hallazgo:
# encontrar . imagen -name *
Aquí hemos utilizado la -nombre parámetro en hallazgo a todos los nombres de archivo que comienzan con la palabra imagen. Tenga en cuenta que esta búsqueda es sensible a mayúsculas. Modificar el comando de # encontrar . imagen -iname * para obtener resultados que no son sensibles a mayúsculas.
Puede, por supuesto, ejecutar búsquedas con caracteres comodín para los archivos con una extensión determinada. Para encontrar todos los archivos contenidos en la carpeta actual y subcarpetas con una .php extensión de ejecutar el siguiente comando, # encontrar . -name *. php. También puede ejecutar búsquedas negativas. Por ejemplo, si desea ejecutar una búsqueda de todos los archivos contenidos en una carpeta y sus subcarpetas que no terminan con la extensión .php ejecute el comando # encontrar . ! -name “* .php”. Note el signo de exclamación que hemos introducido para ejecutar la búsqueda negativo. Esto se puede utilizar para todas las otras opciones también.
Uno de los problemas que a menudo se enfrentan cuando se utiliza el comando find es que se busca en todas las subcarpetas de forma predeterminada. A veces sólo quiere que buscar en una carpeta determinada. Para instruir a encontrar para hacer esto es necesario utilizar la -máxima profundidad opción. Usando esta opción usted puede decir encontrar el número de niveles en las subcarpetas que debe mirar mientras se ejecuta la búsqueda. Así que si usted quiere que la búsqueda de archivos sólo en el conjunto de la carpeta actual maxdepth a cero. El comando que utilizó anteriormente para buscar todos los archivos PHP no sería algo como esto si queríamos para funcionar sólo en la carpeta actual - # encontrar . ! -name “* .php” -maxdepth 0. Aumentar el valor de maxdepth a uno y más cuando se desea aumentar la profundidad de la búsqueda. Del mismo modo también se puede ajustar el -mindepth Si desea establecer un límite superior para el nivel de carpetas buscadas. Puede usar ambos juntos para realizar una búsqueda en las carpetas de nivel inferior sin obtener resultados de otras carpetas.
Vídeo: Ubuntu | 12.- La terminal (shell bash) | 3.- Localización de ficheros y directorios
Buscar con otros criterios
Nos fijamos en cómo buscar archivos utilizando el -nombre opción. El comando find puede Búsqueda en base a varios otros criterios también. por ejemplo, si desea buscar todos los archivos que pertenecen a un determinado usuario utilizar el -usuario opción. Así que si usted quiere encontrar todos los archivos PHP propiedad de la Stewie usuario en una carpeta determinada utilizar el comando, # encontrar . -name “* .php” -maxdepth 2 -user Stewie.
Búsqueda en silencio
A menudo, puede que esté utilizando el comando find en los scripts. El propio comando lanza pocos errores. Sin embargo, cuando se ejecuta como un usuario normal hay errores relacionados con los permisos que a menudo aparecen. Por ejemplo, si se va a realizar una búsqueda de archivos en el directorio raíz como usuario no root puede ver errores como : Permiso denegado surgir. Esto puede ser bastante molesto cuando se utiliza el comando en un script. A pesar de que el propio comando find no parecen tener una solución a esto, podemos caer fácilmente de nuevo en una solución simple UNIX. Redirigir todos los errores a buen viejo / Dev / null. Por lo tanto, un comando como este:
# Find / -name Stewie Griffin *
/ Root: Permiso denegado
/ Home / Peterg: Permiso denegado
/home/stewie/StewieGriffin-resume.doc
Se convertiría en
# Find / -name Stewie Griffin * 2 GT; / dev / null
/home/stewie/StewieGriffin-resume.doc
Ahora se puede utilizar con seguridad el comando find en las secuencias de comandos, sin tener que preocuparse acerca de los errores apareciendo en la salida.
Encuentra para la gente perezosa
Soy usuario de Linux perezoso. Estoy seguro de que hay muchos más como yo por ahí. Estoy razonablemente cómodo con el comando grep. Aunque hallazgo tiene varias opciones muy útiles por sí Me encuentro con él junto con grep muy a menudo. La opción tubería UNIX hace esto muy fácil. Por lo tanto, si quería buscar un archivo que contiene la palabra “web” que por lo general basta con ejecutar una búsqueda de este tipo, # encontrar . | grep web. Este es el equivalente de # encontrar . web -nombre. Del mismo modo, si quería correr la misma búsqueda, pero que sea por lo que es el caso ya no es sensible, yo corría, # encontrar . | grep -i Web. De manera similar se puede combinar con el comando find sed o awk. La belleza de la línea de comandos de Linux o UNIX es que cada una de estas herramientas es muy potente. La probabilidad de que pueda tener el tiempo o la necesidad de dominar a todos ellos es un poco pequeña. En su lugar, es mejor aprender una herramienta muy bien y obtener una idea básica de que el resto, sólo en caso de que los necesite.