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}

Dónde,

  • ruta especifica el directorio.
  • name-of file or dir-to-search : Nombre del archivo o directorio a 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.

Tabla de contenido

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.

  Los 7 mejores temas de escritorio inspirados en Google para Linux

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”, utilice;

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

Explore más ejemplos de comandos grep.

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.

  Cómo deshabilitar IPv6 en Linux

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 permiso 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

      Cómo configurar IntelliJ IDEA IDE en Linux

    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 root. 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 esto curso por Internet.