Uso del comando find en linux

Uso del comando find en linux y otros sistemas derivados de Unix.

El comando find en Linux es una herramienta en línea de comandos, con la capacidad de recorrer íntegramente una jerarquía de archivos, buscando directorios y archivos según las opciones que le hemos indicado.

Su uso es amplio, por ejemplo, puedes ordenar búsquedas precisas y posteriormente realizar operaciones sobre lo encontrado. Admite búsquedas que otros comandos no soportan, por archivo, carpeta, nombre, fecha de creación, fecha de modificación, propietario y permisos, realmente impresionante.

El comando find admite el uso de «-exec», de manera que puedas ejecutar algún comando sobre el archivo o directorio localizado en la búsqueda.

Comando find en linux

Comando find en linux

 

Uso del comando find en linux

En el artículo de hoy vemos algunos ejemplos de uso, pero antes conviene conocer sus interesantes opciones (las más habituales). Las vemos.

  • -exec [comando] : Ejecuta un comando si se cumplen con los criterios establecidos.
  • -ok [comando] : Lo mismo que -exec pero solicitando un usuario.
  • -inum [número de inodo] : Busca archivos por el número de inodo.
  • -links [enlaces] : Buscar archivos por enlaces.
  • -name [archivo] : Especificar el archivo a buscar.
  • -newer [archivo] : Buscar archivos creados o modificados después de la fecha del indicado.
  • -perm [octal] : Buscar archivos con el permiso octal.
  • -print : Imprime la ruta de los archivos encontrados.
  • -empty : Busca directorios y archivos sin contenido.
  • -user name : Buscar los archivos del usuario, que podemos definir por nombre o por su ID.

 

Ejemplos de uso del comando find

Buscar archivos

Todos los archivos del directorio raíz (/).

find / -type f

Todos los archivos de un directorio en particular, en nuestro caso «/etc».

find /etc/ -type f

Ejemplo…

sergio@sololinux:~$ find /etc/ -type f
/etc/xdg/tumbler/tumbler.rc
/etc/xdg/user-dirs.conf
/etc/xdg/menus/xfce-settings-manager.menu
/etc/xdg/menus/gnome-applications.menu
/etc/xdg/menus/xfce-applications.menu
/etc/xdg/Thunar/uca.xml
/etc/xdg/Trolltech.conf
/etc/xdg/autostart/orca-autostart.desktop
/etc/xdg/autostart/blueberry-obex-agent.desktop
/etc/xdg/autostart/indicator-sound.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.MediaKeys.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.Rfkill.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.Smartcard.desktop
/etc/xdg/autostart/light-locker.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.Mouse.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.A11ySettings.desktop
/etc/xdg/autostart/pulseaudio.desktop
/etc/xdg/autostart/org.gnome.SettingsDaemon.Datetime.desktop

 

Buscar directorios

Todos los directorios de la raíz del sistema «/».

find / -type d

Buscar los directorios de un directorio en particular, en nuestro caso de «/etc».

find /etc/ -type d

Imagen de ejemplo…

Buscar directorios en directorios con el comando find

Buscar directorios en directorios con el comando find

 

Buscar archivos por nombre

Si conoces la ruta, nombre o extensión, la búsqueda es muy rápida. Vemos un ejemplo en el que añadimos sudo para evitar que nos bloquee archivos restringidos con la extensión sh.

sudo find /home/sergio -iname *.sh

Ejemplo de salida.

sergio@sololinux:~$ sudo find /home/sergio -iname *.sh
/home/sergio/libera.sh
/home/sergio/Escritorio/libera.sh
/home/sergio/Escritorio/sololinux/libera.sh
/home/sergio/backs/000-PenDRIVE/libera.sh
/home/sergio/scripts/liberados.sh
/home/sergio/scripts/demo.sh
/home/sergio/scripts/sololinux.sh
/home/sergio/scripts/aporte.sh
/home/sergio/scripts/anal-remote.sh

Con «-name», también funciona.

sudo find /home/sergio -name libera.sh

 

Excluir archivos o extensiones de la búsqueda

En este caso excluimos de la búsqueda todos los archivos con extensión txt.

find /etc -not -name “*.txt”

Ejemplo de salida.

sergio@sololinux:~$ find /etc -not -name “*.txt”
/etc
/etc/xdg
/etc/xdg/xdg-default.desktop
/etc/xdg/tumbler
/etc/xdg/tumbler/tumbler.rc
/etc/xdg/user-dirs.conf
/etc/xdg/menus
/etc/xdg/menus/gnome-applications-merged
/etc/xdg/menus/applications-merged
/etc/xdg/menus/xfce-settings-manager.menu
/etc/xdg/menus/gnome-applications.menu
/etc/xdg/menus/xfce-applications.menu

 

Buscar archivos o directorios por tamaño

Si conoces el tamaño específico de un archivo o directorio, puedes encontrarlo con este comando.

find /etc -type f -size 5M

 

Buscar archivos por permisos

Esta opción es realmente interesante. Ampliamente utilizada por usuarios y herramientas automatizadas, que deben verificar los permisos…. por ejemplo de sitios web. En nuestro caso buscamos los archivos con permisos 0644.

find /etc -type f -perm 0644

Otra opción para buscar archivos de solo lectura, con el comando find, es…

find /etc -type f -perm /u=r
Uso del comando find para buscar por permisos

Uso del comando find para buscar por permisos

 

Buscar archivos por usuario o grupo

Para buscar archivos por usuario, te recomiendo utilizar sudo. Si no usas sudo, talvez se omitan algunos archivos.

sudo find / -user sergio

Ejemplo de salida…

sergio@sololinux:~$ sudo find / -user sergio
[sudo] contraseña para sergio:        
/var/tmp/flatpak-cache-NBTLR0
/var/tmp/flatpak-cache-8J8VY0
/var/tmp/flatpak-cache-395WS0
/var/tmp/flatpak-cache-OZ6JS0
/var/tmp/flatpak-cache-2AOSQ0
/var/tmp/flatpak-cache-4AF4R0
/var/tmp/flatpak-cache-T0DUX0
/var/tmp/flatpak-cache-G2ZDZ0
/var/tmp/flatpak-cache-XI0FT0
/var/tmp/flatpak-cache-KDLNQ0

También podemos buscar archivos por el grupo de usuario.

find / -group sergio

 

Buscar archivos por tiempo de acceso o modificación

En las siguientes cadenas de comandos, puedes insertar el valor numérico que más te convenga. Por ejemplo… para buscar archivos que han sido modificados hace un máximo de siete días, ejecutamos este comando (recomiendo utilizar sudo).

sudo find / -mtime 7

Ejemplo…

sergio@sololinux:~$ sudo find / -mtime 7
[sudo] contraseña para sergio:        
/var/backups/alternatives.tar.2.gz
find: ‘/run/user/1000/gvfs’: Permiso denegado
/home/sergio/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/6D
/home/sergio/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/6D/EEB80EB36083
/home/sergio/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/75
/home/sergio/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/49
/home/sergio/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/2E

Ahora los que han cambiado hace menos de 5 minutos.

sudo find / -cmin -5

También los que han sido modificados. Esta opción es similar a la anterior (no igual).

sudo find / -mmin -5

Por último, listamos los archivos a los cuales accediste en los últimos seis minutos.

sudo find / -amin -6

Imagen de ejemplo.

Buscar archivos por tiempo con el comando find

Buscar archivos por tiempo con el comando find

 

Buscar archivos y ejecutar un comando

En este ejemplo de uso, buscamos todos los archivos de un usuario y, los listamos con el «comando ls -ld».

find /home/sergio -exec ls -ld {} \;

Observa el ejemplo.

sergio@sololinux:~$ find /home/sergio -exec ls -ld {} \;
drwxr-xr-x 43 sergio sergio 4096 mar 21 11:45 /home/sergio
-rw-r--r-- 1 sergio sergio 23 sep  2  2020 /home/sergio/.dmrc
-rw-r--r-- 1 sergio sergio 22 sep  2  2020 /home/sergio/.gtkrc-2.0
-rw-r--r-- 1 sergio sergio 1986 dic  7 15:35 /home/sergio/libera.sh
-rw-rw-r-- 1 sergio sergio 25294 mar 18 21:36 /home/sergio/Database.kdbx
drwxr-xr-x 8 root root 4096 sep  2  2020 /home/sergio/rtl8723de
drwxr-xr-x 8 root root 4096 sep  2  2020 /home/sergio/rtl8723de/hal
-rw-r--r-- 1 root root 34961 sep  2  2020 /home/sergio/rtl8723de/hal/hal_intf.c
-rw-r--r-- 1 root root 82905 sep  2  2020 /home/sergio/rtl8723de/hal/hal_mp.c
drwxr-xr-x 2 root root 4096 sep  2  2020 /home/sergio/rtl8723de/hal/hal_hci
-rw-r--r-- 1 root root 958 sep  2  2020 /home/sergio/rtl8723de/hal/hal_hci/hal_pci.c
drwxr-xr-x 4 root root 4096 sep  2  2020 /home/sergio/rtl8723de/hal/phydm

 

Otra opción interesante y como último ejemplo del artículo, es buscar todos los archivos de un directorio con una extensión en particular, y borrarlos con el comando rm. En nuestro ejemplo, eliminamos todos los archivos txt del directorio «/etc», de un plumazo.

sudo find /etc -type f -name *.txt -size -1M -exec rm -f {} \;

 

Ayuda del comando find

Al igual que otros comandos de Unix/Linux, find, también viene con su ayuda integrada.

find -help

Se imprime algo similar a…

Ayuda del comando find

Ayuda del comando find

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Uso del comando find en linux.

Chat de SoloLinux en Telegram

 

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido