GNU/Linux >> Tutoriales Linux >  >> Linux

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


Foto cortesía de Qole Pejorian

Además de la operación básica de buscar archivos en una estructura de directorios, también puede realizar varias operaciones prácticas utilizando el comando de búsqueda que facilitará su recorrido por la línea de comandos.

En este artículo, repasemos 15 ejemplos prácticos del comando de búsqueda de Linux que serán muy útiles tanto para principiantes como para expertos.


Primero, cree los siguientes archivos vacíos de muestra en su directorio de inicio para probar algunos de los ejemplos de comandos de búsqueda que se mencionan a continuación.

# vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

mkdir backup
cd backup

touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

# chmod +x create_sample_files.sh

# ./create_sample_files.sh

# ls -R
.:
backup                  MybashProgram.sh  MyCProgram.c
create_sample_files.sh  mycprogram.c      Program.c

./backup:
MybashProgram.sh  mycprogram.c  MyCProgram.c  Program.c

1. Buscar archivos usando el nombre

Este es un uso básico del comando de búsqueda. Este ejemplo encuentra todos los archivos con el nombre — MyCProgram.c en el directorio actual y todos sus subdirectorios.

# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c

2. Buscar archivos usando el nombre e ignorando mayúsculas y minúsculas

Este es un uso básico del comando de búsqueda. Este ejemplo encuentra todos los archivos con nombre:MyCProgram.c (ignorando el caso) en el directorio actual y todos sus subdirectorios.

# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c

3. Limite la búsqueda a un nivel de directorio específico usando profundidad mínima y profundidad máxima

Busque el archivo passwd en todos los subdirectorios a partir del directorio raíz.

# find / -name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Encuentre el archivo passwd debajo de la raíz y un nivel más abajo. (es decir, raíz:nivel 1 y un subdirectorio:nivel 2)

# find -maxdepth 2 -name passwd
./etc/passwd


Encuentre el archivo passwd debajo de la raíz y dos niveles más abajo. (es decir, raíz:nivel 1 y dos subdirectorios:nivel 2 y 3)

# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Encuentre el archivo de contraseñas entre los niveles de subdirectorio 2 y 4.

# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd

4. Ejecutar comandos en los archivos encontrados por el comando Buscar.

En el siguiente ejemplo, el comando de búsqueda calcula la suma md5 de todos los archivos con el nombre MyCProgram.c (ignorando mayúsculas y minúsculas). {} se reemplaza por el nombre de archivo actual.

# find -iname "MyCProgram.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e  ./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e  ./MyCProgram.c

5. Invirtiendo el partido.

Muestra los archivos o directorios cuyo nombre no es MyCProgram.c. Dado que la profundidad máxima es 1, solo se verá en el directorio actual.

# find -maxdepth 1 -not -iname "MyCProgram.c"
.
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c

6. Búsqueda de archivos por su número de inodo.

Cada archivo tiene un número de inodo único, con eso podemos identificar ese archivo. Cree dos archivos con un nombre similar. es decir, un archivo con un espacio al final.

# touch "test-file-name"

# touch "test-file-name "
[Note: There is a space at the end]

# ls -1 test*
test-file-name
test-file-name


Desde la salida de ls, no puede identificar qué archivo tiene el espacio al final. Con la opción -i, puede ver el número de inodo del archivo, que será diferente para estos dos archivos.

# ls -i1 test*
16187429 test-file-name
16187430 test-file-name


Puede especificar el número de inodo en un comando de búsqueda como se muestra a continuación. En este ejemplo, el comando de búsqueda cambia el nombre de un archivo usando el número de inodo.

# find -inum 16187430 -exec mv {} new-test-file-name \;

# ls -i1 *test*
16187430 new-test-file-name
16187429 test-file-name


Puede utilizar esta técnica cuando desee realizar alguna operación con los archivos que tienen un nombre deficiente, como se muestra en el siguiente ejemplo. Por ejemplo, el archivo con el nombre — ¿archivo?.txt tiene un carácter especial. Si intenta ejecutar "archivo rm? .txt", se eliminarán los tres archivos siguientes. Por lo tanto, siga los pasos a continuación para eliminar solo el archivo "file?.txt".

# ls
file1.txt  file2.txt  file?.txt


Encuentre los números de inodo de cada archivo.

# ls -i1
804178 file1.txt
804179 file2.txt
804180 file?.txt


Utilice el número de inodo para eliminar el archivo que tenía un carácter especial, como se muestra a continuación.

# find -inum 804180 -exec rm {} \;

# ls
file1.txt  file2.txt
[Note: The file with name "file?.txt" is now removed]

7. Buscar archivo basado en los permisos de archivo

Las siguientes operaciones son posibles.

  • Encuentre archivos que coincidan exactamente con el permiso
  • Compruebe si el permiso otorgado coincide, independientemente de otros bits de permiso
  • Buscar dando representación octal/simbólica


Para este ejemplo, supongamos que el directorio contiene los siguientes archivos. Tenga en cuenta que los permisos de archivo en estos archivos son diferentes.

# ls -l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read


Encuentre archivos que tengan permiso de lectura para agrupar. Utilice el siguiente comando para encontrar todos los archivos que todo el mundo puede leer en su directorio de inicio, independientemente de otros permisos para ese archivo.

# find . -perm -g=r -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read


Encuentre archivos que tengan permiso de lectura solo para agrupar.

# find . -perm g=r -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read


Encuentre archivos que tengan permiso de lectura solo para agrupar [buscar por octal]

# find . -perm 040 -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read

8. Encuentre todos los archivos vacíos (archivo de cero bytes) en su directorio de inicio y su subdirectorio

La mayoría de los archivos de la siguiente salida de comando serán archivos de bloqueo y marcadores de posición creados por otras aplicaciones.

# find ~ -empty


Enumere todos los archivos vacíos solo en su directorio de inicio.

# find . -maxdepth 1 -empty


Enumere solo los archivos vacíos no ocultos solo en el directorio actual.

# find . -maxdepth 1 -empty -not -name ".*"

9. Encontrar los 5 archivos grandes principales

El siguiente comando mostrará los 5 archivos más grandes del 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

10. Encontrar los 5 archivos pequeños principales

La técnica es la misma que para encontrar los archivos más grandes, pero la única diferencia es el orden ascendente.

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


En el comando anterior, lo más probable es que solo vea los archivos de CERO bytes (archivos vacíos). Por lo tanto, puede usar el siguiente comando para enumerar los archivos más pequeños que no sean los archivos de bytes CERO.

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

11. Buscar archivos según el tipo de archivo usando la opción -type

Encuentre solo los archivos de socket.

# find . -type s


Buscar todos los directorios

# find . -type d


Encuentra solo los archivos normales

# find . -type f


Encuentra todos los archivos ocultos

# find . -type f -name ".*"


Encuentra todos los directorios ocultos

# find -type d -name ".*"

12. Encuentre archivos comparándolos con el tiempo de modificación de otro archivo.

Muestra los archivos que se modifican después del archivo especificado. El siguiente comando de búsqueda muestra todos los archivos que se crean/modifican después de ordinario_archivo.

# ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all

# find -newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all

13. Buscar archivos por tamaño

Con la opción -size puede buscar archivos por tamaño.

Encuentra archivos más grandes que el tamaño dado

# find ~ -size +100M


Encuentra archivos más pequeños que el tamaño dado

# find ~ -size -100M


Encuentre archivos que coincidan exactamente con el tamaño dado

# find ~ -size 100M


Nota:– significa menos que el tamaño dado, + significa más que el tamaño dado y ningún símbolo significa el tamaño exacto dado.

14. Crear alias para operaciones de búsqueda frecuentes

Si encuentra algo bastante útil, puede convertirlo en un alias. Y ejecútalo cuando quieras.


Elimine los archivos llamados a.out con frecuencia.

# alias rmao="find . -iname a.out -exec rm {} \;"
# rmao


Eliminar los archivos principales generados por el programa c.

# alias rmc="find . -iname core -exec rm {} \;"
# rmc

15. Elimine archivos grandes usando el comando de búsqueda

El siguiente comando elimina los archivos *.zip que tienen más de 100M.

# find / -type f -name *.zip -size +100M -exec rm -i {} \;"

Elimine todos los archivos *.tar que tengan más de 100M usando el alias rm100m (Eliminar 100M). Utilice conceptos similares y cree alias como rm1g, rm2g, rm5g para eliminar el tamaño de archivo superior a 1G, 2G y 5G respectivamente.

# alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"

# rm100m
# rm1g
# rm2g
# rm5g

Buscar ejemplos de comandos, segunda parte

Si te gustó este artículo de mamá sobre el comando de búsqueda, no olvides consultar el artículo de papá sobre el comando de búsqueda:¡Papá, lo encontré!, 15 impresionantes ejemplos de comandos de búsqueda de Linux (Parte 2)

Impresionantes artículos de Linux

Los siguientes son algunos 15 ejemplos impresionantes artículos que pueden resultarle útiles.

  • 15 ejemplos para dominar el historial de línea de comandos de Linux
  • Comando Unix LS:15 ejemplos prácticos
  • ¡Contrólate con el Grep! – 15 ejemplos prácticos de comandos Grep
  • Linux Crontab:15 impresionantes ejemplos de trabajos de Cron

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

  2. Comando cp en Linux:7 ejemplos prácticos

  3. Comando de apagado de Linux:5 ejemplos prácticos

  4. 5 ejemplos prácticos del comando dd en Linux

  5. 10 ejemplos prácticos de comandos de Linux nm

Los 50 Ejemplos Prácticos del Comando SED en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos prácticos de comando ping en Linux

¡Papá, lo encontré!, 15 impresionantes ejemplos de comandos de búsqueda de Linux (Parte 2)