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:
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:
- 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
- Buscar archivos por tipo
- Buscar archivos más nuevos
- Buscar y eliminar un archivo
- encontrar un directorio
- Buscar archivos por hora de modificación
- Buscar archivos con permiso
- Buscar y reemplazar archivos
- Buscar texto dentro de varios archivos
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:
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:
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:
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:
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 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 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 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:
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.