GNU/Linux >> Tutoriales Linux >  >> Linux

25 ejemplos simples del comando de búsqueda de Linux

Comando de búsqueda de Linux

El comando de búsqueda de Linux es un comando muy útil y práctico para buscar archivos desde la línea de comandos. Se puede usar para buscar archivos según varios criterios de búsqueda, como permisos, propiedad del usuario, fecha/hora de modificación, tamaño, etc. En esta publicación, aprenderemos a usar el comando de búsqueda junto con varias opciones que admite.

El comando de búsqueda está disponible en la mayoría de las distribuciones de Linux de forma predeterminada, por lo que no tiene que instalar ningún paquete. El comando de búsqueda es esencial para aprender, si desea ser súper productivo con la línea de comandos en Linux.

La sintaxis básica del comando de búsqueda se ve así

$ find location comparison-criteria search-term

1. Listar todos los archivos en los directorios actuales y secundarios

Este comando enumera todos los archivos en el directorio actual, así como los subdirectorios en el directorio actual.

$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php

El comando es el mismo que el siguiente

$ find .
$ find . -print

2. Buscar directorio o ruta específica

El siguiente comando buscará archivos en el directorio de prueba en el directorio actual. Enumera todos los archivos de forma predeterminada.

$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php

El siguiente comando busca archivos por su nombre.

$ find ./test -name "abc.txt"
./test/abc.txt

También podemos usar comodines

$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php

Tenga en cuenta que todos los subdirectorios se buscan recursivamente. Así que esta es una forma muy poderosa de encontrar todos los archivos de una extensión dada.

Intentar buscar en el directorio "/", que es la raíz, buscaría en todo el sistema de archivos, incluidos los dispositivos montados y los dispositivos de almacenamiento en red. Así que ten cuidado. Por supuesto, puede presionar Ctrl + c en cualquier momento para detener el comando.

When specifying the directory ("./test" in this example), its fine to omit the trailing slash. However, if the directory is actually a symlink to some other location then you MUST specify the trailing slash for it to work properly (find ./test/ ...)

Ignorar el caso

A menudo es útil ignorar las mayúsculas y minúsculas al buscar nombres de archivo. Para ignorar el caso, simplemente use la opción "iname" en lugar de la opción "nombre".

$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php
Its always better to wrap the search term (name parameter) in double or single quotes. Not doing so will seem to work sometimes and give strange results at other times.

3. Limite la profundidad del recorrido del directorio

De forma predeterminada, el comando de búsqueda recorre todo el árbol de directorios de forma recursiva, lo que consume tiempo y recursos. Sin embargo, se puede especificar la profundidad del recorrido del directorio. Por ejemplo, no queremos bajar más de 2 o 3 niveles en los subdirectorios. Esto se hace usando la opción de profundidad máxima.

$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php
$ find ./test -maxdepth 1 -name *.php
./test/cool.php

El segundo ejemplo usa una profundidad máxima de 1, lo que significa que no irá por debajo de 1 nivel de profundidad, ya sea solo en el directorio actual.

Esto es muy útil cuando queremos hacer una búsqueda limitada solo en el directorio actual o en subdirectorios de un máximo de 1 nivel de profundidad y no en todo el árbol de directorios, lo que llevaría más tiempo.

Al igual que la profundidad máxima, hay una opción llamada profundidad mínima que hace lo que sugiere el nombre, es decir, irá al menos a un nivel N de profundidad antes de buscar los archivos.

4. Invertir partido

También es posible buscar archivos que no coincidan con un nombre o patrón determinado. Esto es útil cuando sabemos qué archivos excluir de la búsqueda.

$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir

Entonces, en el ejemplo anterior, encontramos todos los archivos que no tienen la extensión de php, ya sea archivos que no son de php. El comando de búsqueda también admite el signo de exclamación en lugar de no.

find ./test ! -name "*.php"

5. Combina múltiples criterios de búsqueda

Es posible utilizar varios criterios al especificar el nombre y la inversión. Por ejemplo

$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc

El comando de búsqueda anterior busca archivos que comienzan con abc en sus nombres y no tienen una extensión php. Este es un ejemplo de cómo se pueden crear poderosas expresiones de búsqueda con el comando de búsqueda.

Operador

Cuando se utilizan varios criterios de nombre, el comando de búsqueda los combinará con el operador AND, lo que significa que solo se compararán los archivos que satisfagan todos los criterios. Sin embargo, si necesitamos realizar una coincidencia basada en OR, el comando de búsqueda tiene el interruptor "o".

$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php

El comando anterior busca archivos que terminen en la extensión php o en la extensión txt.

6. Buscar solo archivos o solo directorios

A veces queremos encontrar solo archivos o solo directorios con un nombre dado. Find también puede hacer esto fácilmente.

$ find ./test -name abc*
./test/abc.txt
./test/abc
Only files
$ find ./test -type f -name "abc*"
./test/abc.txt
Only directories
$ find ./test -type d -name "abc*"
./test/abc

¡Muy útil y práctico!

7. Buscar varios directorios juntos

Entonces, digamos que desea buscar dentro de 2 directorios separados. Nuevamente, el comando es muy simple

$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt

Verifique que enumeró archivos de 2 directorios separados.

8. Encuentra archivos ocultos

Los archivos ocultos en Linux comienzan con un punto. Por lo tanto, es fácil mencionarlo en los criterios de nombre y enumerar todos los archivos ocultos.

$ find ~ -type f -name ".*"

9. Encuentra archivos con ciertos permisos

El comando de búsqueda se puede usar para buscar archivos con un permiso específico usando la opción "perm". El siguiente comando busca archivos con el permiso 0664

$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Esto puede ser útil para encontrar archivos con permisos incorrectos que pueden generar problemas de seguridad. La inversión también se puede aplicar a la verificación de permisos.

$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php

10. Buscar archivos con bits sgid/suid configurados

La opción "perm" del comando de búsqueda acepta la misma cadena de modo que chmod. El siguiente comando encuentra todos los archivos con el permiso 644 y el conjunto de bits sgid.

# find / -perm 2644

Del mismo modo, use 1664 para la punta adhesiva. La opción permanente también admite el uso de una sintaxis alternativa en lugar de números octales.

$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private

Tenga en cuenta que "2>/dev/null" elimina aquellas entradas que tienen un error de "Permiso denegado"

11. Encuentra archivos de solo lectura

Encuentra todos los archivos de solo lectura.

$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...

12. Encuentra archivos ejecutables

El siguiente comando encontrará archivos ejecutables

$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...

13. Encuentra archivos propiedad de un usuario en particular

Para encontrar todo o un solo archivo llamado tecmint.txt en el directorio /root de la raíz del propietario.

$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php

También podríamos especificar el nombre del archivo o cualquier criterio relacionado con el nombre junto con el criterio del usuario

$ find . -user bob -name '*.php'

Es muy fácil ver cómo podemos crear criterios tras criterios para reducir nuestra búsqueda de archivos coincidentes.

14. Buscar archivos pertenecientes al grupo

Encuentra todos los archivos que pertenecen a un grupo en particular.

# find /var/www -group developer

¿Sabías que puedes buscar en tu directorio de inicio usando el símbolo ~?

$ find ~ -name "hidden.php"

¡¡Fácil!!

Buscar archivos y directorios según la fecha y hora de modificación

Otro gran criterio de búsqueda que admite el comando de búsqueda es la modificación y la fecha/hora de acceso. Esto es muy útil cuando queremos averiguar qué archivos se modificaron en un determinado intervalo de tiempo o fecha. Tomemos algunos ejemplos

15. Encuentra archivos modificados hace N días

Para encontrar todos los archivos que se modificaron hace 50 días.

# find / -mtime 50

16. Buscar archivos a los que se accedió en los últimos N días

Encuentra todos los archivos a los que se accedió en los últimos 50 días.

# find / -atime 50

17. Encuentra archivos modificados en un rango de días

Encuentra todos los archivos que se modificaron hace entre 50 y 100 días.

# find / -mtime +50 –mtime -100

18. Encuentra archivos modificados en los últimos N minutos.

Encuentra archivos modificados en la última hora.

$ find /home/bob -cmin -60

19. Archivos modificados en la última hora

Para encontrar todos los archivos que se modificaron en la última hora.

# find / -mmin -60

20. Buscar archivos accedidos en la última hora

Para encontrar todos los archivos a los que se accedió en la última hora.

# find / -amin -60

21. Encuentra archivos de un tamaño dado

Buscar archivos y directorios según el tamaño. Para encontrar todos los archivos de 50 MB, use.

# find / -size 50M

22. Encuentra archivos en un rango de tamaño

Para encontrar todos los archivos que tienen más de 50 MB y menos de 100 MB.

$ find / -size +50M -size -100M

23. Encuentra los archivos más grandes y más pequeños

El comando de búsqueda, cuando se usa en combinación con el comando ls y ordenar, se puede usar para listar los archivos más grandes.
El siguiente comando mostrará los 5 archivos más grandes en el directorio actual y su subdirectorio. Esto puede tardar un tiempo en ejecutarse dependiendo de la cantidad total de archivos que el comando tenga que procesar.

$ find . -type f -exec ls -s {} \; | sort -n -r | head -5

De manera similar, cuando se ordena en orden ascendente, mostraría primero los archivos más pequeños

$ find . -type f -exec ls -s {} \; | sort -n | head -5

24. Encuentra archivos y directorios vacíos

El siguiente comando usa la opción "vacío" del comando de búsqueda, que encuentra todos los archivos que están vacíos.

# find /tmp -type f -empty

Para archivar todos los directorios vacíos utilice el tipo "d".

$ find ~/ -type d -empty

Realmente muy simple y fácil

Algunas operaciones avanzadas

El comando de búsqueda no solo encuentra archivos en función de ciertos criterios, sino que también puede actuar sobre esos archivos utilizando cualquier comando de Linux. Por ejemplo, podríamos querer eliminar algunos archivos.

Aquí hay algunos ejemplos rápidos

25. Enumere los archivos encontrados

Digamos que encontramos archivos usando el comando find, y ahora queremos enumerarlos como lo hubiera hecho el comando ls. Esto es muy fácil.

$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 .
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php

26. Eliminar todos los archivos o directorios coincidentes

El siguiente comando eliminará todos los archivos de texto en el directorio tmp.

$ find /tmp -type f -name "*.txt" -exec rm -f {} \;

La misma operación se puede realizar con directorios, basta con poner tipo d, en lugar de tipo f.

Tomemos otro ejemplo en el que queremos eliminar archivos de más de 100 MB

$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Resumen

Ese fue un tutorial rápido sobre el comando de búsqueda de Linux . El comando de búsqueda es uno de los comandos más esenciales en la terminal de Linux, que permite buscar archivos muy fácilmente. Es imprescindible para todos los administradores de sistemas. Así que apréndelo. Tiene alguna pregunta ? Deja un comentario a continuación.


Linux
  1. 25 ejemplos prácticos útiles del comando find en Linux

  2. 8 ejemplos de comandos TR de Linux

  3. Ejemplos de comandos rm en Linux

  4. encontrar ejemplos de comandos en Linux

  5. Ejemplos de comandos ps en Linux

Comando Find de Linux con ejemplos prácticos

50 ejemplos simples y útiles del comando Buscar en Linux

15 ejemplos súper útiles del comando Buscar en Linux

Tutorial de comando de búsqueda de Linux (con ejemplos)

¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux

Ejemplos de comandos id en Linux