logo

Buscar comando en Linux/Unix con ejemplos

El comando buscar nos ayuda a encontrar un archivo particular dentro de un directorio. Se utiliza para encontrar la lista de archivos para diversas condiciones, como permiso, propiedad del usuario, modificación, fecha/hora, tamaño y más.

En sistemas operativos tipo Unix y otros, el comando buscar es una utilidad de línea de comandos que busca archivos basándose en algunos formatos especificados por el usuario e imprime el nombre de ruta de todos los objetos coincidentes o, si se solicitan otras acciones, implementa esa acción en todos los objetos coincidentes.

Comienza una búsqueda desde una ubicación de inicio deseada y, después de eso, recorre recursivamente los directorios (nodos) de una estructura jerárquica (generalmente un árbol). El comando de búsqueda puede buscar y recorrer desde diferentes sistemas de partición de archivos que pertenecen a uno o más dispositivos de almacenamiento en el directorio de inicio.

El formato de búsqueda contiene un patrón para comparar con el nombre de archivo o el rango de tiempo para comparar con la hora de modificación o la hora de acceso al archivo. El comando de búsqueda proporciona una lista de todos los archivos en el directorio de trabajo actual de forma predeterminada. Sin embargo, los usuarios pueden restringir la búsqueda a un nivel máximo deseado en el directorio de inicio.

Los programas de localización asociados aplican una base de datos de archivos indexados obtenida del comando fino para brindar una técnica más rápida para buscar todo el sistema de archivos por nombre.

La utilidad de búsqueda viene de forma predeterminada con la mayoría de los Distribuciones de Linux , por lo que no necesitamos instalar ningún paquete adicional. Es uno de los comandos más esenciales y utilizados del linux sistema.

 find 

Las dos opciones determinan cómo debe considerar find los enlaces simbólicos. La naturaleza predeterminada es nunca buscar vínculos simbólicos. La bandera, es decir, -l , llevará a encontrar a buscar vínculos simbólicos. La bandera, es decir, -H , simplemente buscará enlaces simbólicos mientras continúa con los argumentos de la línea de comando. Las banderas se mencionan en el estándar POSIX para el comando de búsqueda. Una extensión básica es una bandera, es decir, -PAG , para deshabilitar explícitamente el siguiente enlace simbólico.

Al menos un camino debe anticipar la expresión. El comando de búsqueda puede interpretar internamente comodines y los comandos deben citarse cuidadosamente para gestionar el globalización del shell.

Los componentes de la expresión están aislados por el límite del argumento de la línea de comando, generalmente indicado como espacio en blanco dentro de la sintaxis del shell. Se consideran del lado izquierdo al lado derecho. Pueden incluir componentes lógicos como OR y AND, así como predicados (acciones y filtros). GNU find contiene varias otras características no mencionadas por POSIX.

Los siguientes símbolos se utilizan para especificar el directorio:

(.) : Para el nombre del directorio actual

(/) : Para el directorio raíz

Breve historia del comando Buscar

El comando de búsqueda se produjo en la versión 5 de Unix como un elemento del Banco de trabajo del programador proyecto y fue especificado por Dick Haight con cpio, que fueron desarrollados para usarse juntos.

Originalmente, la implementación GNU del comando buscar fue especificada por Eric Decker . Posteriormente fue desarrollado por David MacKenzie, Tim Wood , y Jay Plett . Además, el comando de búsqueda se ha portado al sistema operativo IBM i.

cómo comprobar el tamaño de la pantalla del monitor

Predicados

Las primarias ampliamente utilizadas son:

    -patrón de nombre:Comprueba que el nombre del archivo sea el mismo que el patrón Shell-glob dado o no.-tipo tipo:Comprueba que el archivo sea del tipo proporcionado.-imprimir:Siempre da el verdadero valor. Imprime el nombre del archivo actual y una nueva línea en la salida estándar.-imprimir0:Siempre da el verdadero valor. Imprime el nombre del archivo actual y un carácter nulo en la salida estándar. No es necesario para POSIX.-programa ejecutivo [argumento...];:Siempre da el verdadero valor. Ejecuta un programa con los argumentos fijos dados y la ruta del archivo actual.-programa ejecutivo [argumento...] { } +:Siempre da el verdadero valor. Ejecuta un programa con los argumentos fijos dados y tantas rutas como sea posible. Para casi todas las implementaciones, otras apariciones de {} significan copias adicionales del nombre de pila (aspecto que POSIX no necesita).-ok programa [argumento...];:Es lo mismo que -exec, pero devolverá falso o verdadero si el programa da 0.

Encuentre los valores predeterminados para implementar -print en caso de que las condiciones sean verdaderas si la expresión no utiliza ninguno de -ok, -exec, -print o -print0.

Operadores

Los operadores mejoran las expresiones del comando de búsqueda. Se mencionan en orden de precedencia descendente:

    (expr):Este operador puede forzar la prioridad.! expresión:Si expr devuelve falso, devuelve verdadero.
  • expr1 expr2 (o expr1 -a expr2: AND. expr2 no se evalúa si expr1 es falso.
  • expr1 -o expr2 : O. expr2 no se evalúa si expr1 es verdadero.

Ejemplos del comando buscar

Veamos los siguientes ejemplos del comando buscar:

Buscar archivos por nombre

Podemos buscar todos los archivos que terminen con la extensión '.txt'. Para hacerlo, ejecute el siguiente comando:

 find . -name '*.txt' 

El comando anterior enumerará todos los archivos de texto del directorio de trabajo actual. Considere el siguiente resultado:

Buscar en Linux

Del resultado anterior, todos los archivos que tienen la extensión '.txt' se enumeran con el comando de búsqueda.

Encontrar archivos por tipo

El parámetro '-type' se utiliza para especificar el tipo de archivo.

Algunos de los tipos de archivos son los siguientes:

buscador y ejemplos
  • f: archivo normal
  • d: directorio
  • l: enlaces simbólicos
  • c: dispositivos de caracteres
  • b: bloquear dispositivos

Considere el siguiente comando:

 find . -type d -name '*.bak' 

El comando anterior enumerará todos los directorios que tienen la extensión '.bak'. Considere el siguiente resultado:

Buscar en Linux

Del resultado anterior, el comando 'buscar. -type d -name '*.bak' muestra todos los directorios que terminan en '.bak'.

Buscar archivos más nuevos

El parámetro '-newer' ayuda a buscar archivos que sean más recientes que el archivo mencionado. Considere el siguiente comando:

 find . -newer msg.txt 

El comando anterior mostrará todos los archivos que sean más nuevos que 'msg.txt' del directorio de trabajo actual. Considere el siguiente resultado:

Buscar en Linux

Según el resultado anterior, todos los archivos mostrados son más nuevos que el archivo 'msg.txt'.

Buscar y eliminar un archivo

La opción '-delete' se utiliza para eliminar un archivo específico. Debemos tener mucho cuidado al usar este comando porque no hay opción de deshacer si se ejecuta una vez. Considere el siguiente comando:

 find . -name Demo.txt -delete 

El comando anterior eliminará el archivo 'Demo.txt' del directorio de trabajo actual. Considere el siguiente resultado:

Buscar en Linux

encontrar un directorio

La opción 'type -d' se utiliza para buscar un directorio. Considere el siguiente comando:

 find . type -depth -name Newdirectory 

El comando anterior encontrará la ubicación 'Nuevodirectorio'. Considere el siguiente resultado:

Buscar en Linux

Buscar archivos por hora de modificación

La opción '-mtime', seguida del número de días, se utiliza para buscar los archivos por modificación. El número de días puede ser positivo o negativo. El valor negativo se usará para menos de lo que se usa -1 para el último día y, de manera similar, +1 encontrará el archivo de hace más de un día. Considere el siguiente comando:

 find ./Newdirectory -mtime -1 

El comando anterior encontrará los archivos que se modificaron en el último día. Considere el siguiente resultado:

Buscar en Linux

Buscar archivos con permiso

La opción '-perm' se utiliza para buscar archivos mediante permiso. Ejecute el comando de búsqueda con la opción '-perm' y pase el valor requerido. Considere el siguiente comando:

Ups en java
 find ./ -perm 777 

El comando anterior enumerará los archivos del directorio especificado que todos pueden leer, escribir y ejecutar.

Buscar y reemplazar archivos

Para buscar y reemplazar archivos, tenemos que combinar el comando buscar con el comando sed. Para operar con archivos, use la opción '-exec' con el comando de búsqueda. Considere el siguiente comando:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

del comando anterior, se reemplazará la ocurrencia especificada. Considere el siguiente resultado:

Buscar en Linux

Buscar texto dentro de varios archivos

Podemos hacer otra combinación del comando buscar con el comando grep para buscar el texto de los distintos archivos. Considere el siguiente comando:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

El comando anterior encontrará las líneas que contienen el texto 'demo' de todos los archivos de texto dentro del directorio 'Nuevodirectorio'. Considere el siguiente resultado:

Buscar en Linux

En el resultado anterior, podemos ver que se han mostrado las líneas que tienen el texto 'demo'.

Buscar en todos los directorios

 $ find / -name file1 -type f -print 

El comando anterior busca todos los directorios de un archivo normal cuyo título es archivo1 y lo imprime en la pantalla. Generalmente, no es una buena idea buscar archivos de esta manera. Puede llevar una buena cantidad de tiempo. Entonces, es mejor mencionar el directorio. Algunos sistemas operativos pueden montar sistemas de archivos (dinámicos) que no son favorables al comando de búsqueda. Es posible que sea necesario cerrar entre comillas simples los nombres de archivos más complicados que contengan caracteres exclusivos del shell.