Los 40 mejores ejemplos del comando Buscar en Linux

El comando de b√ļsqueda de Linux es una poderosa herramienta que permite a los administradores de sistemas ubicar y administrar archivos y directorios en funci√≥n de una amplia gama de criterios de b√ļsqueda. Puede encontrar directorios y archivos por su nombre, su tipo o extensi√≥n, tama√Īo, permisos, etc.

Adem√°s de localizar archivos y directorios, combinar el comando de b√ļsqueda con otros le permite tomar medidas sobre los resultados. Agregar la opci√≥n -exec permite a los administradores de sistemas ejecutar comandos externos y realizar acciones como copiar, mover, eliminar o cambiar los permisos de los archivos que coinciden con los criterios especificados, como el tama√Īo, el nombre, etc.

En este art√≠culo, comenzaremos explicando los comandos b√°sicos de b√ļsqueda de Linux con ejemplos. Esto le mostrar√° c√≥mo encontrar archivos y directorios. Luego le mostraremos c√≥mo usar la opci√≥n -exec para actuar sobre los archivos o directorios seg√ļn su tama√Īo, permisos, etc.

La sintaxis general para el comando de b√ļsqueda es

find {path} {name -of-file or dir-to-search} {action-to-take}

Donde,

ruta especifica el directorio. nombre del archivo o directorio a buscar: nombre del archivo o directorio para buscar acción a realizar: como copiar, eliminar, mover, etc.

En este tutorial, explicaremos cómo localizar archivos y directorios que coincidan con patrones específicos. También veremos cómo realizar acciones sobre los archivos o directorios que localiza el comando find. La guía se basa en Ubuntu pero es aplicable a la mayoría de las distribuciones y versiones de Linux.

Buscar archivos y directorios

Encuentra archivos específicos por nombre o extensión

Para buscar un archivo específico, ejecute el siguiente comando desde la raíz (/). El comando contiene el nombre exacto del archivo que está buscando.

find . -name file22.txt

Producción

./test/file22.txt
./sales/file22.txt

Tenga en cuenta que los resultados incluyen la ruta. Esto es importante si no conoce el directorio donde se encuentra el archivo o cuando se encuentra en m√°s de un lugar.

Tambi√©n puede buscar el archivo en otro directorio mientras a√ļn se encuentra en la ubicaci√≥n actual. En este caso, debe proporcionar la ruta del directorio donde desea buscar.

find ./test -name file22.txt

Buscando archivos específicos en otro directorio

En nuestro caso, buscaremos todos aquellos que comiencen con el archivo de letras en el directorio de prueba.

find ./test -name file*

Producción

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Buscar archivos por extensión

Para encontrar un archivo en Linux con cierta extensión, agréguelo al comando.

find . -name *.txt

Producción

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Buscar archivos y directorios por nombre

Use el siguiente comando para buscar archivos y directorios que comiencen con las letras qa. En nuestra computadora, tenemos los archivos qatree.txt y qa.txt, así como un directorio con el nombre qa.

Si ejecutamos el comando;

find ./ -name "qa*"

Devuelve la siguiente salida

./test/qatree.pdf
./test/qa.txt
./home/qa

El comando devuelve tanto los archivos como los directorios que coinciden con los criterios de b√ļsqueda. Para buscar archivos o directorios √ļnicamente, debe especificarlo en el comando.

Buscar archivos o directorios solamente

Solo para archivos, use el interruptor tipo f.

Solo archivos

find ./ -type f -name "qa*"

Producción

./test/qatree.pdf
./test/qa.txt

Solo directorios

Agregue la opción de tipo d para localizar directorios solamente.

find ./ -type d -name "qa*"

Producción

./home/qa

Comando de b√ļsqueda que no distingue entre may√ļsculas y min√ļsculas

Todas las b√ļsquedas con el cambio de nombre distinguen entre may√ļsculas y min√ļsculas y no dar√°n resultados con letras may√ļsculas. Para obtener todos los casos, use la opci√≥n -iname.

find ./ -iname "qa*"

Producción

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Buscar un archivo en varios directorios

Para encontrar los archivos en diferentes directorios, agregue sus rutas en el comando. En nuestro caso, comprobaremos en los directorios de prueba y numéricos.

find ./test ./numeric -name file22.txt -type f

Producción

./test/file22.txt
/root/numeric/file22.txt

Encuentre m√ļltiples archivos con diferentes extensiones de todos los directorios

Puede usar el comando de b√ļsqueda para ubicar varios archivos que comparten las diferentes extensiones, como *.doc, *.txt *.pdf, etc. Esto se puede hacer por separado, una extensi√≥n a la vez, o usando solo un comando que incluye todos las extensiones deseadas.

encontrar . -tipo f ( -nombre “*.txt” -o -nombre “*.pdf” -o -nombre “*.doc” )

producción

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Buscar archivos que contengan cierto texto

A veces, desea acceder a un archivo que contiene cierto texto pero no puede recordar su nombre de archivo o ubicación. Este comando le permite encontrar todos los archivos que contienen su texto de destino.

Para buscar todos los archivos que contengan la palabra hiperconvergencia‚ÄĚ, use;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Producción

/root/numeric/hci
/root/HCIP

La opci√≥n ‚Äďi permite que el comando ignore los casos y encontrar√° el texto en may√ļsculas o no, es decir, hiperconvergencia, Hiperconvergencia, etc.

Para buscar los archivos en un directorio específico, simplemente agréguelos al comando

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Producción

./numeric/hci

Buscar archivos y directorios seg√ļn el tama√Īo

Puede encontrar todos los archivos o directorios que son m√°s peque√Īos, iguales o mayores que un tama√Īo determinado, dentro de un rango determinado o vac√≠os. Utilice el formato de tama√Īo adecuado seg√ļn el tipo de archivos o directorios que est√© buscando.

Las opciones de tama√Īo incluyen;

c-bytes

k – kilobytes

M ‚Äď Megabytes

G ‚Äď Gigabytes

Encuentre archivos de cierto tama√Īo, igual a 30 MB

Para buscar encontrar todos los archivos de 30 MB

find / -size 30M

Encuentra archivos m√°s grandes que un tama√Īo especificado

find -size +2M

Producción

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Encuentra archivos de menos de 10 MB en el directorio actual

find . -type f -size -10M

Encuentra archivos con tama√Īos entre 100-200 MB

Al buscar archivos dentro de un rango específico, como entre 100 y 200 MB

find / -size +100M -size -200M

Busque directorios de m√°s de 20 kb

encontrar / -tipo d -tama√Īo +20k

Encuentra archivos y directorios vacíos.

archivos

encontrar ./ ‚Äč‚Äč-tipo f -tama√Īo 0

o

find ./ -type f ‚Äďempty

directorios

find ./ -type d ‚Äďempty

Encuentre archivos por edad o tiempo de modificación

Buscar archivos de más de n días

find /path/ -type f -name '*.txt' -mtime +8

El -mtime +8 buscará archivos txt que tengan más de 8 días.

Por fecha de modificación

Esto buscar√° archivos modificados en las √ļltimas 17 horas.

find . -mtime -17 -type f 

Busca directorios modificados en los √ļltimos 10 d√≠as

find . -mtime -10 -type d 

Buscar archivos seg√ļn el acceso o la modificaci√≥n

Encuentre archivos seg√ļn la fecha o la hora de acceso. Esto le permite ver archivos a los que se ha accedido o no dentro de un per√≠odo espec√≠fico.

Para ver los archivos a los que no se ha accedido en los √ļltimos 10 d√≠as en el directorio de inicio.

find /home -atime +10

Archivos accedidos hace exactamente 10 días

find /home -atime 10

Accedido en los √ļltimos 10 d√≠as

find /home -atime -10

Buscar archivos modificados en los √ļltimos n d√≠as

Tambi√©n puede buscar los archivos en el directorio /home modificados en los √ļltimos 10 d√≠as usando el comando;

find /home -mtime -10 

Encuentra archivos modificados dentro de un período específico.

Por ejemplo, todos los archivos modificados hace entre 6 y 15 días en el directorio de inicio.

find /home -type f -mtime +6 -mtime -15

Archivos y directorios accedidos en los √ļltimos 10 minutos

Para encontrar los archivos a los que se accedi√≥ en los √ļltimos 10 minutos, use la opci√≥n -amin.

find . -amin -10 -type f

Producción

./.bash_history
./[email protected]:~#

Directorios accedidos en los √ļltimos 10 minutos

find . -amin -10 -type d

Buscar archivos que coincidan con permisos específicos

Sintaxis

$ find -perm mode

Donde modo es el permiso que puede ser numérico como 644, 655, 700, 777, etc., o letras como u=x, a=r+x, etc.

Puede especificar el modo de las siguientes tres formas diferentes.

    Sin prefijo cuando desee buscar archivos con los permisos exactos especificados. Con ‚Äú-‚Äú para archivos con al menos el permiso especificado. Esto devuelve archivos con los permisos m√°s altos especificados y adicionales. El uso de “/” requiere especificar el propietario o grupo con permiso para el archivo.

Buscar archivos con permiso 777

find -perm 777

Producción

./file1

Encuentra archivos con al menos 766
encontrar -perm -766

Producción

./file2
./file1

El comando busca todos los archivos en los que

El propietario del archivo tiene permisos de lectura/escritura/ejecución. El grupo tiene permisos de lectura/escritura Otros tienen permisos de lectura/escritura

Como tal, devuelve dos archivos que cumplen este criterio: archivo1 y archivo2. No es necesario que los archivos tengan los permisos 766 exactos y pueden tener permisos adicionales, pero deben tener al menos los especificados.

Buscar archivos en los que el propietario pueda escribir

Ahora usaremos el “/” para buscar archivos que puedan ser escritos por su propietario, grupo u otros.

find -perm /222
.
./file2
./file3
./file1

Lo anterior busca archivos en los que su propietario o grupo puedan escribir.
Esto devuelve archivos en los que cualquiera puede escribir, pero no necesariamente ambos. Para ver archivos, donde ambos tienen permisos de escritura, use el prefijo ‚Äď.

find -perm -220

Producción

./file2
./file1

Buscar archivos propiedad de un usuario

Encuentra todos los archivos propiedad de Jack

find /home -user jack

Producción

/home/jack
/home/jack/examples.desktop
/home/jack/.gnupg
/home/jack/.gnupg/private-keys-v1.d
/home/jack/ans.cgi

Encuentra archivos específicos propiedad de un usuario

Encuentra todos los archivos de texto propiedad de Jack

find /home -user jack -iname "*.txt"

Producción

/home/jack/docs/file32.txt

Encuentre y enumere archivos y directorios junto con sus permisos

find -name "*.conf" | ls -l

Producción

total 120
drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
-rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
-rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

Encuentre y act√ļe sobre los resultados

En esta secci√≥n, veremos c√≥mo puede actuar sobre los archivos que coinciden con el patr√≥n especificado en el comando de b√ļsqueda.

Buscar archivos y cambiar permisos

Encuentre y cambie los permisos de ciertos tipos de archivos. En nuestro caso, trabajaremos con archivos PHP con diferentes permisos como se muestra a continuación.

[email protected]:~/ver$ ls -la

total 8
drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
-rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
-rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
-rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

Ahora buscaremos todos los archivos PHP (arriba) y reemplazaremos sus permisos con 755

find ver -name "*.php" -type f -exec chmod 755 {} ;

El comando busca archivos PHP en el directorio ver y luego establece su permiso en 755 (rwxr-xr-x)

Resultados

[email protected]:~/ver$ ls -la
total 8
drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
-rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

Buscar y cambiar permisos de archivos y directorios

Encuentre archivos con permisos 644 y c√°mbielos para que tengan permisos 655

find . -type f -perm 644 -exec chmod 655 {} ;

También puede buscar directorios con permisos 644 y reemplazarlos con 755.

find . -type d -perm 644

Producción

./docs   

La carpeta docs tiene 644 permisos.

drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

Para establecerlo en 755, ejecutamos

find . -type d -perm 644 -exec chmod 755 {} ;

Ahora podemos comprobar de nuevo para ver qué es exactamente 755

find . -type d -perm 755

Producción
.
./docs

Desde arriba podemos ver que los directorios raíz y docs tienen los permisos 755.

El comando Ls ‚Äďla da los siguientes detalles

drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

Buscar y copiar archivos o directorios

Buscar y copiar un archivo específico en un directorio

El siguiente comando encontrar√° el archivo file22.txt y lo copiar√° en el directorio ~/tmp/images.

find -iname file22.txt -exec cp {} ~/tmp/images ;

Buscar y copiar un tipo de archivos en un directorio

Para buscar archivos como imágenes con extensión jpg en el directorio actual y copiarlos en una ubicación diferente como una carpeta de imágenes, use;

find -iname '*.jpg' -exec cp {} ~/tmp/images ;

Esto encontrar√° y copiar√° todos los archivos jpg en la carpeta ~/tmp/images.

Encuentre y copie un archivo a muchos directorios

Busque y copie uno en varios directorios.

find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

Esto encontrar√° el archivo hci y lo copiar√° en los tres directorios de /tmp/dir1/ /tmp/dir2/ y $HOME/3/

Buscar y mover archivos a un directorio diferente

Para mover un archivo conocido de un directorio a otro. Para mover el archivo universal.php;

find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

Busque y mueva archivos con cierta extensión a una carpeta diferente

find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

Encuentre ciertos archivos y muévase a una carpeta diferente específica

find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

El comando busca todos los archivos con nombres que comienzan con uni y que tienen cualquier extensión. Luego los mueve al directorio /unifiles/

Encuentra y mueve archivos seg√ļn su edad

Busque y mueva archivos con una antig√ľedad superior a los d√≠as especificados a una ubicaci√≥n diferente, como el archivo.

find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

Esto buscar√° archivos pdf con m√°s de 20 d√≠as de antig√ľedad y los mover√° al directorio backup1.

Buscar y eliminar archivos y directorios

La sintaxis para buscar y eliminar archivos o directorios en el directorio actual es

encontrar . -type f -name “archivo a borrar” -exec rm -f {} ; para borrar archivos solamente o

encontrar . -type d -name “dir-to-delete” -exec rm -rf {} ; para borrar directorios solamente

Buscar y eliminar solo archivos específicos

Para buscar y eliminar archivos que comiencen con til, use;

find . -type f -name "til*" -exec rm {} ; 

Para buscar y eliminar directorios que comienzan con til

find . -type d -name "til*" -exec rm {} ;

Eliminar archivos y directorios

find . -name "til*" -exec rm -rf {} ; 

Esto eliminar√° tanto los archivos como los directorios que comiencen con las letras til.

Eliminar por extensión

A continuación se muestra cómo puede ubicar y eliminar todos los archivos txt en el directorio actual. Reemplace el txt con otra extensión como bak, pdf o cualquier otra que desee eliminar.

find . -type f -name "*.txt" -exec rm -f {} ;

En caso de que desee que el sistema le pida que confirme antes de eliminar cada archivo, agregue la opción -i como se muestra a continuación.

find . -type f -name "*.txt" -exec rm -i {} ;

Producción

rm: remove regular empty file './File22.txt'? y
rm: remove regular empty file './file22.txt'? y
rm: remove regular empty file './file23.txt'?

De forma predeterminada, -rm no eliminará los directorios y debe usar la opción -r para garantizar una eliminación recursiva. Esto asegura la eliminación de directorios vacíos y aquellos que contienen archivos. La opción -f fuerza la eliminación y se usa tanto para los archivos como para los directorios.

Buscar y eliminar archivos de más de n días

Busque y elimine archivos de copia de seguridad con m√°s de 20 d√≠as de antig√ľedad en el directorio actual.

find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

Esto eliminará todos los archivos .bak que tengan más de 20 días.

Buscar y eliminar solo directorios

Para eliminar un directorio llamado dir22

find . -type d -name dir22 -exec rm -rf {} ;

Aseg√ļrese de hacer coincidir el caso del nombre del directorio o use la opci√≥n -iname.

find . -type d -iname Dir22 -exec rm -rf {} ;

Elimina tanto Dir22 como dir22

Para confirmar antes de la eliminación, use la opción -i.

find . -type d -iname Dir22 -exec rm -rf -i {} ;

Producción
rm: eliminar el directorio ‘./Dir22’? norte
rm: eliminar el directorio ‘./dir22’? y

En nuestro caso, escribimos n para el directorio Dir22 que no se eliminar√° e y para el directorio dir22 que ahora se eliminar√°.

Buscar y eliminar archivos vacíos

Puede usar cualquiera de los siguientes comandos para localizar archivos vacíos y eliminarlos automáticamente.

find ./ -type f -size 0 -exec rm -f {} ;

o
encontrar ./ ‚Äč‚Äč-tipo f -tama√Īo 0 | xargs rm -f
o
buscar ./ ‚Äč‚Äč-tipo f -tama√Īo 0 ‚Äďeliminar

Buscar y eliminar directorios vacíos

Para eliminar directorios vacíos usaremos la opción d.

find ./ -type d -empty -exec rmdir {} ;

Otra alternativa es usar eliminar en lugar de eliminar.

find ./ -type d -empty -delete

Tenga en cuenta que eliminar archivos del sistema o cr√≠ticos de su computadora puede da√Īar el sistema operativo o las aplicaciones o provocar la p√©rdida de sus datos importantes.

Para evitar eliminaciones accidentales, se recomienda utilizar una cuenta de usuario que no sea ra√≠z. Adem√°s, aseg√ļrese de eliminar los archivos correctos que no son √ļtiles y de tener una copia de seguridad de todos sus archivos de datos por si acaso.

¬ŅQue sigue?

Contin√ļe y pruebe los comandos de b√ļsqueda de Linux anteriores en su laboratorio o entorno NO DE PRODUCCI√ďN. Vea si puede usar algunos para automatizar la limpieza del sistema de archivos con Crontab. Y, para dominar Linux, echa un vistazo a este curso en l√≠nea.