actualizado: 30/11/2020 por Computer Hope

en los sistemas operativos Linux, el comando find se puede usar para buscar archivos y directorios en su computadora. Para continuar, seleccione un enlace de la siguiente lista o vaya a través de cada sección EN orden.

Nota

para usar find, comience abriendo una sesión de terminal para acceder a la línea de comandos.

funcionalidad básica de find

Ejecutar find sin ninguna opción produce una lista de todos los archivos y directorios dentro y debajo del directorio de trabajo., Por ejemplo, si su directorio de trabajo es /home/hope/Documents, ejecutar find muestra lo siguiente:

  • Cada archivo en/home/hope / Documents.
  • cada subdirectorio en/home/hope / Documents.
  • Cada archivo en cada uno de esos subdirectorios.

vamos a verlo en acción., En primer lugar, vamos a comprobar nuestro directorio de trabajo mediante el comando pwd:

pwd
/home/hope/Documents

ahora vamos a ejecutar find sin ninguna opción:

find

en este ejemplo, vemos un total de diez archivos y cuatro subdirectorios carpeta de documentos.

observe que la salida comienza con un solo punto, que representa el directorio de trabajo., Ejecutar find sin opciones es lo mismo que especificar que la búsqueda debe comenzar en el directorio de trabajo, así:

find .

el ejemplo anterior es la forma» adecuada » de usar find. Si intenta usarlo en otro sistema operativo tipo Unix, como FreeBSD, es necesario especificar un directorio. Es una buena práctica usar esta forma del comando.,

especificando dónde buscar

para listar Solo los archivos y subdirectorios que están contenidos en el directorio/home/hope/Documents/images, especifique el primer argumento del comando como:

find /home/hope/Documents/images

observe que la ruta completa también se muestra en los resultados.,

si nuestro directorio de trabajo es /home/hope/Documents, podemos usar el siguiente comando, que encuentra los mismos archivos:

find ./images

pero esta vez, la salida refleja la ubicación inicial de la búsqueda y se ve así:

por defecto, la búsqueda se ve en cada subdirectorio de su ubicación inicial. Si desea restringir cuántos niveles de Subdirectorio buscar, puede usar la opción-maxdepth con un número.

por ejemplo, especificando-maxdepth 1 Busca solo en el directorio donde comienza la búsqueda., Si se encuentran subdirectorios, se enumeran, pero no se buscan.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

Specifying-maxdepth 2 Busca en el directorio y un subdirectorio profundo:

find . -maxdepth 2

Specifying-maxdepth 3 busca un nivel más profundo que eso:

find . -maxdepth 3

buscar por nombre

para restringir sus resultados de búsqueda para que coincidan solo con archivos y directorios que tienen un nombre determinado, use la opción-Name y ponga el nombre entre comillas:

find . -name "picard.jpg"
./images/memes/picard.jpg

También puede usar comodines como parte de su nombre de archivo., Por ejemplo, para encontrar todos los archivos cuyo nombre termina en .jpg, puede usar un asterisco para representar el resto del nombre del archivo. Cuando se ejecuta el comando, el shell se glob el nombre de archivo en cualquier cosa que coincida con el patrón:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

Observe que el comando no muestra el archivo cuya extensión (en este caso, JPG) está en mayúsculas. Esto se debe a que, a diferencia de otros sistemas operativos, como Microsoft Windows, los nombres de archivo de Linux distinguen entre mayúsculas y minúsculas.,»>

para listar Solo directorios y omitir nombres de archivo, especifique-type d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

buscar archivos basados en el tamaño

por ejemplo, para encontrar archivos que son «más grandes que 50 kilobytes», use-size +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

para archivos «mayores de 10 megabytes», use-size +10m:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

para «mayores de 1 gigabyte», use-size +1g:

find . -size +1G
./archlinux-2016.02.01-dual.iso

para archivos en un cierto rango de tamaño, Use opciones de dos tamaños., Por ejemplo, para encontrar archivos «más grandes que 10 megabytes, pero más pequeños que 1 gigabyte», especifique-size +10m-size-1g:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

buscar archivos basados en la modificación, el acceso o el cambio de estado

la opción-mtime restringe la búsqueda por cuántos días desde que se modificaron los contenidos del archivo. Para especificar días pasados, utilice un número negativo., Por ejemplo, para encontrar solo los archivos que se modificaron en los últimos dos días (Hace 48 horas), use-mtime -2:

find . -mtime -2

la opción-mmin hace lo mismo, pero en términos de minutos, no de días. Por ejemplo, este comando solo muestra los archivos modificados en la última media hora:

find . -mmin -30

una opción similar es-ctime, que comprueba cuándo se cambió el estado de un archivo por última vez, medido en días. Un cambio de estado es un cambio en los metadatos del archivo. Por ejemplo, cambiar los permisos de un archivo es un cambio de estado.,

La opción -cmin busca un cambio de estado, medido en minutos.

también puede buscar cuándo se accedió por última vez a un archivo, en otras palabras, cuándo se vio su contenido por última vez. La opción-atime se utiliza para buscar archivos en función de su tiempo de acceso más reciente, medido en días.

la opción-amin realiza la misma restricción de búsqueda, pero se mide en minutos.

redirigir la salida a un archivo de texto

si está realizando una búsqueda muy grande, es posible que desee guardar los resultados de su búsqueda en un archivo, para que pueda ver los resultados más tarde., Puede hacer esto redirigiendo su salida de búsqueda a un archivo:

find . -iname "*.jpg" > images.txt

a continuación, puede abrir sus resultados en un editor de texto o imprimirlos con el comando cat.

cat images.txt

alternativamente, puede canalizar su salida al comando tee, que imprime la salida a la pantalla y la escribe en un archivo:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

supresión de mensajes de error

Puede recibir el mensaje de error «Permiso denegado» al realizar una búsqueda., Por ejemplo, si busca en el directorio raíz como usuario normal:

find /

recibirá ese mensaje de error si find intenta acceder a un archivo que su cuenta de usuario no tiene permiso para leer. Puede realizar la búsqueda como el superusuario (root), que tiene acceso completo a todos los archivos en el sistema. Pero no se recomienda hacer las cosas como root, a menos que no haya otras opciones.,

si todo lo que necesita hacer es ocultar los mensajes de «Permiso denegado», puede agregar 2&>1 | grep-v «Permiso denegado» al final de su comando, de esta manera:

find / 2>&1 | grep -v "Permission denied"

el ejemplo anterior filtra permiso denegado «mensajes de su búsqueda. ¿Cómo?

2>&1 es una redirección especial que envía mensajes de error a la salida estándar para canalizar las líneas combinadas de salida al comando grep., grep-v luego realiza una coincidencia inversa en «Permiso denegado», mostrando solo líneas que no contienen esa cadena.

redireccionar y usar grep para filtrar los mensajes de error es una técnica útil cuando «Permiso denegado» está saturando los resultados de búsqueda y no puede realizar la búsqueda como root.

ejemplos

find ~/. -name "*.txt" -amin -120

buscar todos los archivos en su directorio personal y debajo de los cuales terminan en la extensión».txt». Mostrar solo los archivos a los que se ha accedido en las últimas dos horas.,

find . -name "*.zip" -size +10M -mtime -3

buscar todos los archivos en el directorio de trabajo y debajo cuyo nombre tiene la extensión».zip » y cuyo tamaño es superior a 10 megabytes. Mostrar solo los archivos cuyo contenido haya sido modificado en las últimas 72 horas.

find . -iname "*report*" -type f -maxdepth 2

realice una búsqueda insensible a mayúsculas y minúsculas de archivos que contengan la palabra «report» en su nombre. Si la búsqueda encuentra un directorio con «report» en su nombre, no lo muestre. Busque solo en el directorio de trabajo, y un nivel de directorio debajo de él.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

buscar todos los archivos en el sistema cuyo nombre contiene «init», suprimiendo los mensajes de error. Muestra los resultados en la pantalla y envíalos a un archivo en tu directorio personal llamado «initfiles.txt».